如下,dao的impl中有大量重复且与业务无关语句,其实核心语句就一行sqlSession.selectOne("billDao.selectUser", uid);
,我如何改进呢?
public UserDTO getUserByUid(int uid) {
DBAccess dbAccess = new DBAccess();
SqlSession sqlSession = null;
UserDTO result = null;
try {
sqlSession = dbAccess.getSqlSession();
result = sqlSession.selectOne("billDao.selectUser", uid);
sqlSession.commit();
} catch (IOException e) {
e.printStackTrace();
} finally {
if(sqlSession != null)
sqlSession.close();
}
return result;
}
最好的做法自然是通过spring管理
如果要手动获取的session必然需要自己关闭.
一般来说使用spring-mybatis,如果要手动实现daoImpl,应该由spring注入由SqlSessionTemplate生成的sqlSession
如果不手动实现daoImpl,可以编写Mapper接口,通过mybatis-spring提供的MapperFactoryBean类来动态代理实现mapper接口(即daoImpl)。
通过MapperFactoryBean动态实现接口注入业务层,则可以直接在业务层调用dao层的方法。