基於泛型的通用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
- }
- }
相關文章
- Hibernate 泛型實現 dao 層的基類泛型
- Hibernate的Dao層通用設計
- JAVA基礎之九-泛型(通用型別)Java泛型型別
- Java中如何使用泛型實現介面中的列表集合?Java泛型
- TypeScript 泛型介面和泛型類TypeScript泛型
- 基於 golang 實現的泛型陣列,支援動態擴容等特性Golang泛型陣列
- 介面即泛型泛型
- Java中基於泛型的交叉型別 - {4Comprehension}Java泛型型別
- rust學習十一.1、泛型(通用型別)Rust泛型型別
- TS類,介面,泛型的簡介泛型
- 關於泛型泛型
- 基於RestAssured實現介面自動化REST
- apiAutoTest:基於mitmproxy實現介面錄製APIMIT
- Spring Boot實現通用的介面引數校驗Spring Boot
- 基於FutureBuilder通用網路請求介面封裝Rebuild封裝
- TS系列之介面/類/泛型泛型
- java 基礎 泛型Java泛型
- TypeScript基礎--泛型TypeScript泛型
- Java基礎-泛型Java泛型
- Java基礎 —— 泛型Java泛型
- MyBatis進階--介面代理方式實現Dao 和動態SQLMyBatisSQL
- 泛型最佳實踐:Go泛型設計者教你如何用泛型泛型Go
- 基於.NET 5實現的開源通用許可權管理平臺
- TypeScript學習(四)—— 介面和泛型TypeScript泛型
- Go泛型基礎使用Go泛型
- 泛型--泛型萬用字元和泛型的上下限泛型字元
- C 語言實現泛型 swap 函式泛型函式
- 基於JWT標準的使用者認證介面實現JWT
- C#中的介面和泛型集合探討C#泛型
- 基於 Log 的通用增量 Checkpoint
- Go泛型解密:從基礎到實戰的全方位解析Go泛型解密
- 在C語言中實現泛型程式設計C語言泛型程式設計
- C語言如何實現泛型程式設計?C語言泛型程式設計
- Java基礎-泛型詳解Java泛型
- 【Java反射】Java 泛型基礎Java反射泛型
- Java基礎之泛型方法Java泛型
- java基礎複習-----泛型Java泛型
- 基於DotNetty實現一個介面自動釋出工具 - 通訊實現Netty
- 泛型類、泛型方法及泛型應用泛型