基於泛型的通用Dao介面hibernate實現
hibernate實現
基於泛型的通用Dao介面:(主要是在使用hibernate或JPA時使用)
- package com.qiujy.dao;
- import java.io.Serializable;
- import java.util.List;
- public interface GenericDao<T> {
- void create(T entity);
- void delete(T entity);
- void update(T entity);
- T findById(Serializable id);
- List<T> findAll();
- List<T> findList(int pageNo, int pageSize);
- int getCountOfAll();
- }
hibernate實現該口
- package com.qiujy.dao.hibernate;
- import java.io.Serializable;
- import java.lang.reflect.ParameterizedType;
- import java.util.List;
- import org.hibernate.criterion.Projections;
- import com.qiujy.common.HibernateUtil;
- import com.qiujy.dao.GenericDao;
- /**
- * Hibernate對泛型通用Dao介面的實現
- */
- public class GenericHibernateDaoImpl<T> implements GenericDao<T> {
- private Class<T> clazz;
- @SuppressWarnings("unchecked")
- public GenericHibernateDaoImpl() {
- //通過反射獲取T的型別資訊例項
- this.clazz = (Class<T>)((ParameterizedType)this.getClass().getGenericSuperclass())
- .getActualTypeArguments()[0];
- }
- public void create(T entity) {
- HibernateUtil.getSession().save(entity);
- }
- public void delete(T entity) {
- HibernateUtil.getSession().delete(entity);
- }
- @SuppressWarnings("unchecked")
- public void update(T entity) {
- //HibernateUtil.getSession().saveOrUpdate(entity);
- entity = (T) HibernateUtil.getSession().merge(entity);
- }
- @SuppressWarnings("unchecked")
- public List<T> findAll() {
- return HibernateUtil.getSession().createCriteria(clazz).list();
- }
- @SuppressWarnings("unchecked")
- public List<T> findList(int pageNo, int pageSize) {
- return HibernateUtil.getSession().createCriteria(clazz)
- .setFirstResult((pageNo - 1) * pageSize)
- .setMaxResults(pageSize)
- .list();
- }
- public int getCountOfAll() {
- Integer count = (Integer) HibernateUtil.getSession()
- .createCriteria(clazz)
- .setProjection(Projections.rowCount())
- .uniqueResult();
- if (null == count) {
- return 0;
- } else {
- return count.intValue();
- }
- }
- @SuppressWarnings("unchecked")
- public T findById(Serializable id) {
- return (T)HibernateUtil.getSession().load(clazz, id); //get
- }
- }
相關文章
- 泛型DAO介面spring_hibernate_實現泛型Spring
- Hibernate 泛型實現 dao 層的基類泛型
- 使用註解來構造IoC容器 & 基於Spring、Hibernate的通用DAO層與Service層的實現Spring
- hibernate 通用分頁,查詢分頁的泛型類泛型
- JAVA基礎之九-泛型(通用型別)Java泛型型別
- Java中如何使用泛型實現介面中的列表集合?Java泛型
- TypeScript 泛型介面和泛型類TypeScript泛型
- 基於 golang 實現的泛型陣列,支援動態擴容等特性Golang泛型陣列
- Java泛型知識點:泛型類、泛型介面和泛型方法Java泛型
- 介面即泛型泛型
- Don’t repeat the DAO!--使用Hibernate和Spring AOP購建一個範型型別安全的DAOSpring型別
- 基於list_head實現的通用核心Hash表
- Java中基於泛型的交叉型別 - {4Comprehension}Java泛型型別
- 關於泛型泛型
- TS類,介面,泛型的簡介泛型
- Android RecyclerView 通用介面卡的實現AndroidView
- apiAutoTest:基於mitmproxy實現介面錄製APIMIT
- 基於RestAssured實現介面自動化REST
- 物件導向基礎(2)--抽象類 介面 集合 泛型物件抽象泛型
- 基於STM32的學習型通用紅外遙控裝置的設計實現(一)
- 使用泛型實現棧結構泛型
- Java泛型的理解與等價實現Java泛型
- 基於FutureBuilder通用網路請求介面封裝Rebuild封裝
- IT轉型與基於雲的架構實現架構
- TS系列之介面/類/泛型泛型
- C# 泛型 介面約束C#泛型
- java 基礎 泛型Java泛型
- Java基礎-泛型Java泛型
- JavaSE基礎:泛型Java泛型
- TypeScript基礎--泛型TypeScript泛型
- 【Java基礎】泛型Java泛型
- Java 泛型的理解與等價實現薦Java泛型
- 實驗---泛型泛型
- MyBatis進階--介面代理方式實現Dao 和動態SQLMyBatisSQL
- 泛型最佳實踐:Go泛型設計者教你如何用泛型泛型Go
- Spring Boot實現通用的介面引數校驗Spring Boot
- 基於.NET 5實現的開源通用許可權管理平臺
- TypeScript學習(四)—— 介面和泛型TypeScript泛型