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

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

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

下面显示的是BaseDaoImpl部分的代码,这个类实现了公共代码的抽取,比如说session,实现了公共的CRUDjava SSH三大框架整合,实现了泛型baseAction,泛型baseService,泛型baseDao

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

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

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

java SSH三大框架整合,实现了泛型baseAction,泛型baseService,泛型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<T> implements BaseDao<T> {
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<T> 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  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值