java SSH三大框架整合,实现了泛型baseAction,泛型baseService,泛型baseDao

SSH三大框架整合,实现了泛型baseAction,泛型baseService,泛型baseDao

struts2的版本为2.3,hibernate为3.6.10,spring为3.2,用的数据库是mysql5.0

java SSH三大框架整合,实现了泛型baseAction,泛型baseService,泛型baseDao_第1张图片

BaseAction抽取了公共代码,比如UserService,StudentService等,还有ModelDriver,request,session,application,parameter等,还有struts跟json整合的时候,写一个jsonMap或者jsonList

下面显示的是BaseDaoImpl部分的代码,这个类实现了公共代码的抽取,比如说session,实现了公共的CRUD

然后UserDaoImpl这个类继承了BaseDaoImpl,然后又实现了自身的业务逻辑代码,比如登陆注册等

 BaseServiceImpl也是抽取了一些公共代码,比如说用户的UserDao、TeacherDao,StudentDao等,他们都是用spring来依赖注入,有一个很关键的就是,BaseDao是泛型的,因为类型不可知,所以是不能被注入的,所以只能通过反射来创建

 package com.ssh.demo.dao.impl;
02  
03 import java.lang.reflect.ParameterizedType;
04 import java.util.List;
05  
06 import javax.annotation.Resource;
07  
08 import org.hibernate.Session;
09 import org.hibernate.SessionFactory;
10 import org.springframework.context.annotation.Lazy;
11 import org.springframework.stereotype.Repository;
12  
13 import com.ssh.demo.dao.BaseDao;
14  
15  
16 /**
17  *
18  * @Title: BaseServiceImpl.java
19  * @Package cn.itcast.shop.service.impl
20  * @Description: TODO(用来抽取和实现公共的业务逻辑代码)
21  * @author QQ495663075
22  * @date 2014-4-27 上午9:39:19
23  * @version V1.0
24  */
25 @Repository("baseDao")
26 @Lazy(true)
27 @SuppressWarnings("unchecked")
28 public class BaseDaoImpl implements BaseDao {
29     // 当前的T类型
30     private Class clazz=null;
31      
32     public BaseDaoImpl(){
33         System.out.println("当前子类对象:" this);
34         System.out.println("获取当前this对象相应的类型:" this.getClass());
35         System.out.println("获取当前类型的父类型信息(并不包括父类型参数信息):" this.getClass().getSuperclass());
36         System.out.println("获取当前类型的父类型信息(包括父类型参数信息):" this.getClass().getGenericSuperclass());
37         ParameterizedType type=(ParameterizedType)this.getClass().getGenericSuperclass();
38         clazz=(Class)type.getActualTypeArguments()[0];
39         System.out.println(clazz);
40     }
41  
42     @Resource
43     private SessionFactory sessionFactory;
44  
45     protected Session getSession() {
46         return sessionFactory.getCurrentSession();
47     }
48  
49     @Override
50     public void save(T t) {
51         getSession().save(t);
52     }
53  
54     @Override
55     public void delete(int id) {
56         String hql = "DELETE FROM " + clazz.getSimpleName() + " WHERE id=:id";
57         getSession().createQuery(hql) //
58                 .setInteger("id", id)//
59                 .executeUpdate();
60     }
61  
62     @Override
63     public void update(T t) {
64         try {
65             getSession().update(t);
66         catch (Exception e) {
67             e.printStackTrace();
68         }
69     }
70  
71     @Override
72     public List query() {
73         String hql = "FROM " + clazz.getSimpleName();
74         return getSession().createQuery(hql).list();
75     }
76  
77     @Override
78     public T get(int id) {
79         String hql = "FROM " + clazz.getSimpleName() + " WHERE id=:id";
80         return (T) getSession().createQuery(hql) //
81                 .setInteger("id", id)//
82                 .uniqueResult();
83     }
84 }
85  

你可能感兴趣的:(java)