BaseDao
来源:互联网 发布:淘宝直播能赚多少钱 编辑:程序博客网 时间:2024/06/04 18:04
@SuppressWarnings("unchecked")@Repository("baseDao")public class BaseDaoImpl<T extends BaseModel, PK extends Serializable> implements IBaseDao<T, PK> { @PersistenceContext(unitName="jpa_persistence") protected EntityManager entityManager; /** * @return the entityManager */ public EntityManager getEntityManager() { return entityManager; } /** * @param entityManager * the entityManager to set */ public void setEntityManager(EntityManager entityManager) { this.entityManager = entityManager; } /* * (non-Javadoc) * */ @Override public T getObjectById(Class<T> clazz, PK id) { return entityManager.find(clazz, id); } /* * (non-Javadoc) * */ @Override public void removeById(Class<T> clazz, PK id) { T obj = entityManager.find(clazz, id); entityManager.remove(obj); } /* * (non-Javadoc) * */ @Override public void removeByObject(T obj) { entityManager.remove(obj); } /* * (non-Javadoc) * */ @Override public void save(T obj) { if (obj.getCreateBy() == null) { obj.setCreateBy(""); } if (obj.getUpdateBy() == null) { obj.setUpdateBy(""); } obj.setCreateDate(new Date()); obj.setUpdateDate(new Date()); entityManager.persist(obj); } /* * (non-Javadoc) * */ @Override public void update(T obj) { if (obj.getUpdateBy() == null) { obj.setUpdateBy(""); } obj.setUpdateDate(new Date()); entityManager.merge(obj); } /* * (non-Javadoc) * */ @SuppressWarnings("static-access") @Override public Page queryPageByParams(Page page, String hql, Map<String, Object> params) { String countSQL = hql.substring(hql.indexOf("from")); int count = this.queryCount("select count(*)" + countSQL, params); Query query = entityManager.createQuery(hql); if (null != params) { for (String parameter : params.keySet()) { query.setParameter(parameter, params.get(parameter)); } } int countPage = (count % page.getRows() == 0 ? count / page.getRows() : (count / page.getRows()) + 1); if (countPage < page.getCountPage()) { page.setPage(1); } query.setFirstResult((page.getPage() - 1) * page.getRows()); query.setMaxResults(page.getRows()); List<Object> list = query.getResultList(); Page p = new Page(list, count, page.getPage(), page.getRows()); p.setCountPage(count % page.getRows() == 0 ? count / page.getRows() : (count / page.getRows()) + 1); p.setOrderColumn(page.getOrderColumn()); p.setSort(StringUtils.isBlank(page.getSort()) ? page.ORDER_SORT_DESC : page.getSort()); return p; } /* * (non-Javadoc) * */ @Override public int queryCount(String hql, Map<String, Object> params) { Query query = entityManager.createQuery(hql); if (null != params) { for (String parameter : params.keySet()) { query.setParameter(parameter, params.get(parameter)); } } try{ Long countValue = Long.parseLong(query.getSingleResult().toString()); int count = 0; if (null != countValue) { count = countValue.intValue(); } return count; }catch(NoResultException e){ return 0; } } /* * (non-Javadoc) * */ @Override public int updateObjectByMap(String hql, Map<String, Object> map) { Query query = entityManager.createQuery(hql); if (map != null) { for (String key : map.keySet()) { query.setParameter(key, map.get(key)); } return query.executeUpdate(); } entityManager.flush(); return 0; } /* * (non-Javadoc) * */ @Override public List<T> getObjectListByMap(String hql, Map<String, Object> map) { Query query = entityManager.createQuery(hql); if (null != map) { for (String parameter : map.keySet()) { query.setParameter(parameter, map.get(parameter)); } } List<T> list = query.getResultList(); if (null != list && list.size() > 0) { return list; } else { return null; } } /* * (non-Javadoc) * */ public List<T> getObjectListByMapAndCacheName(String hql, Map<String, Object> map, String cacheName) { Query jpaQuery = entityManager.createQuery(hql); QueryImpl queryImpl = null; org.hibernate.Query hibernateQuery = null; List<T> list = null; if (null != map) { for (String parameter : map.keySet()) { jpaQuery.setParameter(parameter, map.get(parameter)); } } if (jpaQuery instanceof QueryImpl) { queryImpl = ((QueryImpl) jpaQuery); hibernateQuery = queryImpl.getHibernateQuery(); hibernateQuery.setCacheable(true); hibernateQuery.setCacheRegion(cacheName); list = hibernateQuery.list(); } else { list = jpaQuery.getResultList(); } if (null != list && list.size() > 0) { return list; } else { return null; } } /* * (non-Javadoc) * */ public String getSeqNo(String seq_name) { String sql = "select " + seq_name + ".nextval from dual"; Query query = entityManager.createNativeQuery(sql); String sequence = query.getResultList().get(0).toString(); int j = 3 - sequence.length(); for (int i = 0; i < j; i++) { sequence = "0" + sequence; } return sequence; } @Override public String getSeqNoBySeqLength(String seqName, int seqLength) { String sql = "select " + seqName + ".nextval from dual"; Query query = entityManager.createNativeQuery(sql); String sequence = query.getResultList().get(0).toString(); int j = seqLength - sequence.length(); for (int i = 0; i < j; i++) { sequence = "0" + sequence; } return sequence; } /* * (non-Javadoc) * */ @Override public void flush() { entityManager.flush(); } @Override public List<Object[]> findBySQLNaitv(String sql) { Query query = entityManager.createNativeQuery(sql); List<Object[]> obj = query.getResultList(); return obj; } @Override public List<Object[]> findBySQLNaitvWithMap(String sql, Map<String, Object> map) { Query query = entityManager.createNativeQuery(sql); if (null != map) { for (String parameter : map.keySet()) { query.setParameter(parameter, map.get(parameter)); } } List<Object[]> obj = query.getResultList(); return obj; } /** * 通过原生sql获取单列数据 * * @param sql * @return 返回集合 */ @Override public List<Object> findSingProBySQLNaitvWithMap(String sql, Map<String, Object> map) { Query query = entityManager.createNativeQuery(sql); if (null != map) { for (String parameter : map.keySet()) { query.setParameter(parameter, map.get(parameter)); } } List<Object> obj = query.getResultList(); return obj; } /** * 通过原生sql查记录总数,建议使用上面的hql方式分页 * * @Date : 2014年6月4日 * @param sql * @param params * @return */ public int querySQLNaitvWithCount(String sql, Map<String, Object> params) { Query query = entityManager.createNativeQuery(sql); if (null != params) { for (String parameter : params.keySet()) { query.setParameter(parameter, params.get(parameter)); } } Long countValue = Long.parseLong(query.getSingleResult().toString()); int count = 0; if (null != countValue) { count = countValue.intValue(); } return count; } /** * 通过原生sql分页,建议使用上面的hql方式分页 * * @Date : 2014年6月4日 * @param page * @param sql * @param params * @return */ public Page querySQLNaitvWithPageByParams(Page page, String sql, Map<String, Object> params) { String countSQL = sql.substring(sql.indexOf("from")); int count = this.querySQLNaitvWithCount("select count(*)" + countSQL, params); Query query = entityManager.createNativeQuery(sql); if (null != params) { for (String parameter : params.keySet()) { query.setParameter(parameter, params.get(parameter)); } } int countPage = (count % page.getRows() == 0 ? count / page.getRows() : (count / page.getRows()) + 1); if (countPage < page.getCountPage()) { page.setPage(1); } query.setFirstResult((page.getPage() - 1) * page.getRows()); query.setMaxResults(page.getRows()); List<Object> list = query.getResultList(); Page p = new Page(list, count, page.getPage(), page.getRows()); p.setCountPage(count % page.getRows() == 0 ? count / page.getRows() : (count / page.getRows()) + 1); p.setOrderColumn(page.getOrderColumn()); p.setSort(StringUtils.isBlank(page.getSort()) ? page.ORDER_SORT_DESC : page.getSort()); return p; } @Override public int updateNativeSQLByWithParams(String sql, Map<String, Object> params) { Query query = entityManager.createNativeQuery(sql); if (null != params) { for (String parameter : params.keySet()) { query.setParameter(parameter, params.get(parameter)); } } int rowCount = query.executeUpdate(); return rowCount; }}
0 0
- BaseDAO
- basedao
- BaseDao
- baseDao
- BaseDao
- BaseDao
- BaseDAO
- BaseDao
- BaseDao
- BaseDao
- BaseDao
- BaseDao
- BaseDao....
- BaseDao
- BaseDao
- BaseDao
- baseDao
- BaseDao
- 垃圾收集器之路
- java REST入门:使用 JAX-RS 简化 REST 应用开发
- c3.js 文档翻译(一)
- 第十三周--项目4Floyd算法验证
- 活动安排(选择)问题拓展
- BaseDao
- 面向对象
- 苦练内功,应对多变
- 怎么得到listview的item的view
- 第13周实践项目Kruskal算法验证
- java面向对象基础知识(一)
- Java反射探索研究
- Android客户端发送json数据乱码出现问好解决
- window.location下的属性说明