项目描述

一、TD-LTE上行干扰诊断系统
1、项目描述:
该项目分为两部分:一部分是算法执行部分,该部分将算法执行结果放在postgresql数据库,另一部分则是从MySQL数据库中查看干扰小区原始数据。
2、我的职责:
负责从MySQL数据库中读取原始数据呈献给前台页面,使用经典的Spring集成hibernate框架。数据访问层用hibernate实现,其中使用spring提供的sessionFactory.getCurrentSession()来获取session.(这样获取的session会自动开启与关闭事务),业务层实现业务逻辑,该项目只是简单地调用dao层的方法,对事物的管理使用spring的声明式事务管理(使用注解,简单方便)。表现层使用SpringMVC进行开发。
另外,并对该项目用junit框架进行了简单地测试。
3、核心代码:
(1)dao层查询。

//查(根据小区名和分析时间联合查询)
    public List<IDSResource> findIDSResourceBYNameAndTime(String sectorName,String ananasyTime)
            throws Exception{
        String hql = "from IDSResource where SectorName = ? and AnanasyTime = ?";
        Query query = sessionFactory.getCurrentSession().createQuery(hql);
        query.setParameter(0, sectorName);
        query.setParameter(1, ananasyTime);
        List<IDSResource> list = (List<IDSResource>)query.list();
        return list;
    }

(2)controller编写

@Controller
@RequestMapping(value = "/home")
public class IDSResourceController {
    @Autowired
    private IDSResourceInter inter;

    @RequestMapping(value = "/result",method = RequestMethod.GET)
    @ResponseBody //将返回数据直接写到Httpresponse的body中,而不是解析为跳转路径。
    public IDSResourceResultDTO getIDSResource(
            @RequestParam String sectorName,
            @RequestParam String ananasyTime) throws Exception{
        List ll = inter.findIDSResourceByNameAndTime(sectorName, ananasyTime);
        //...下面是对返回数据的一些逻辑处理,逻辑处理本应该放在service层的,
    }
}

(3)测试代码

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration({"applicationContext.xml"})
@Transactional
public class IDSResourceDAOTest {
    @Test
    public void saveTest() throws Exception {
        IDSResourceDAO dao = new IDSResourceDAO();
        IDSResource idsr = new IDSResource();
        idsr.setSectorName("河南");
        dao.saveIDSResouce(idsr);
    }
}

4、项目中遇到的问题
getCurrentSession()和openSession()两者的区别:
hql语言的编写:面向对象,而不是数据库。
hibernate也支持原生的sql语句,这时候执行的函数是:
session.createSQLQuery(String sql);
SpringMVC中@ResponseBody的作用。

你可能感兴趣的:(项目)