springside筆記一
1. dao層
以Hibernate為例
首先定義了一個類
java 程式碼
- public class HibernateGenericDao extends HibernateDaoSupport
HibernateGenericDao 具有CRUD等基本功能。
又定義了一個供所有實體物件對應的Service層繼承的類:
java 程式碼
- HibernateEntityDao< T > extends HibernateGenericDao implements EntityDao< T >
這裡用到了jdk5.0裡的範型,當一個實體物件對應的Service層繼承該類時,比如:
java 程式碼
- public class UserManager extends HibernateEntityDao < User >
會把User這個實體物件傳遞給HibernateEntityDao.
當UserManager被例項化時,首先會去呼叫其父類的建構函式,HibernateEntityDao的建構函式裡的程式碼如下:
java 程式碼
- protected Class<t></t> entityClass;// DAO所管理的Entity型別.
- /**
- * 在建構函式中將泛型T.class賦給entityClass.
- */
- public HibernateEntityDao() {
- entityClass = GenericsUtils.getSuperClassGenricType(getClass());
- }
java 程式碼
- public static Class getSuperClassGenricType(Class clazz) {
- return getSuperClassGenricType(clazz, 0);
- }
java 程式碼
- public static Class getSuperClassGenricType(Class clazz, int index) {
- //返回表示此 Class 所表示的實體的直接超類的 Type,也就是extends的類。不包含implements的
- //Type是Class的父類
- Type genType = clazz.getGenericSuperclass();
- if (!(genType instanceof ParameterizedType)) {
- log.warn(clazz.getSimpleName() + "'s superclass not ParameterizedType");
- return Object.class;
- }
- //返回表示此型別實際型別引數的 Type 物件的陣列,陣列裡放的都是對應型別的Class
- Type[] params = ((ParameterizedType) genType).getActualTypeArguments();
- if (index >= params.length || index < 0) {
- log.warn("Index: " + index + ", Size of " + clazz.getSimpleName() + "'s Parameterized Type: "
- + params.length);
- return Object.class;
- }
- if (!(params[index] instanceof Class)) {
- log.warn(clazz.getSimpleName() + " not set the actual class on superclass generic parameter");
- return Object.class;
- }
- return (Class) params[index];
- }
相關文章
- springside筆記二SpringIDE筆記
- springside是什麼?SpringIDE
- 筆記一筆記
- SpringSide 4.0 GA版釋出SpringIDE
- SpringSide 3 中的安全框架SpringIDE框架
- Dubbo筆記(一)筆記
- 前端筆記(一)前端筆記
- Scala筆記(一)筆記
- MyBatis筆記(一)MyBatis筆記
- RUST 筆記(一)Rust筆記
- docker筆記(一)Docker筆記
- Bootstrap筆記《一》boot筆記
- 機器學習筆記(一)機器學習筆記
- React筆記(一)React筆記
- TypeScript筆記(一)TypeScript筆記
- 爬蟲筆記(一)爬蟲筆記
- InnoDB文件筆記(一)筆記
- 一點git筆記Git筆記
- 學習筆記(一)筆記
- Pytorch筆記(一)PyTorch筆記
- Laravel框架筆記(一)Laravel框架筆記
- ECMAScript 6筆記(一)筆記
- 【筆記】oracle xml (一)筆記OracleXML
- 英國史筆記(一)筆記
- X$BH筆記<一>筆記
- 筆記:記錄一次面試筆記面試
- 《DBA手記一》讀書筆記筆記
- LaTeX學習筆記:一筆記
- ANFIS學習筆記(一)筆記
- Angular 學習筆記(一)Angular筆記
- tableau視訊筆記(一)筆記
- vue一些筆記Vue筆記
- Flutter 高效自學筆記(一)Flutter筆記
- GOLang 學習筆記(一)Golang筆記
- oracle學習筆記《一》Oracle筆記
- React 學習筆記【一】React筆記
- Jquery學習筆記(一)jQuery筆記
- goLang學習筆記(一)Golang筆記