您的位置:首页 > 其它

关于MyBatis通用Dao的实现

2016-01-29 15:06 513 查看
现在越来越多的开发者使用MyBatis作为ORM的框架,它开发迅速,上手容易,开源代码多。但是在进行数据库操作的时候的独自生成的DaoMaper业务太多,在相互调用的业务之间,容易产生这样那样的事务问题。因此本人一直想寻找一个类似Hibernate一样的通用数据库管理Dao,采用Spring注入的方式即可。

MyBatis已经改成了SqlSessionTemplate来连接数据库,话不多说直接上代码。

public class IbatisGeneralDAOImpl implements GeneralDAO {

private Logger _logger = Logger.getLogger(getClass());

private SqlSessionTemplate sqlSession;

@Autowired

public void setSqlSession(SqlSessionTemplate sqlMapClient) {

this.sqlSession = sqlMapClient;

_logger.debug("Mybatis数据库连接对象注入GeneralDAO完成");

}

/*

*查单条记录 CTH

*/

public <T> T queryObject(String sqlId, Object param) {

return sqlSession.selectOne(sqlId, param);

}

/*

*查多条记录,并实现分页功能

*/

public <T> List<T> queryForList(String sqlId, Object param) {

List<T> list = null;

if (ActionUtil.isPage_app()) {//手机APP分页

List<T> list2 = sqlSession.selectList(sqlId,param,new RowBounds(ActionUtil.getStart(),ActionUtil.getLimit()));

if (ListUtil.isEmpty(list2)) return new ArrayList<T>();

if (ActionUtil.isDirection_pre() && (ActionUtil.getStart()==0)){

list = new ArrayList<T>();

for (int i=list2.size()-1;i>-1;i--) list.add(list2.get(i));

} else list = list2;

} else if (ActionUtil.isPage_web()) //Web端分页

list = sqlSession.selectList(sqlId, param,new RowBounds(ActionUtil.getStart(),ActionUtil.getLimit()));

else list = sqlSession.selectList(sqlId, param);//不分页

Integer total = sqlSession.selectOne("systemMap.getListCount");

ActionUtil.setTotal(total);

return list;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: