SSH中baseDao的写法
来源:互联网 发布:博雅软件集团高层 编辑:程序博客网 时间:2024/06/05 02:50
BaseDao接口:抽取常用的方法
package com.oa.base;import java.util.List;public interface BaseDao<T> {/** * 保存实体 * @param entity */void save(T entity);/** * 删除实体 * @param id */void delete(Integer id);/** * 更新实体 * @param entity */void update(T entity);/** * 按id查询 * @param id * @return */T getById(Integer id);/** * 按id查询 * @param ids * @return */List<T> getByIds(Integer...ids);/** * 查询所有 * @return */List<T> findAll();}
BaseDao的实现类BaseDaoImpl:
package com.oa.base;import java.lang.reflect.ParameterizedType;import java.util.List;import javax.annotation.Resource;import org.hibernate.Session;import org.hibernate.SessionFactory;public class BaseDaoImpl<T> implements BaseDao<T> {// 从容器中注入sessionFactory@Resourceprivate SessionFactory sessionFactory;private Class<T> clazz; // 怎样获取T的类型clazz呢? 在构造器中利用反射public BaseDaoImpl() {// 使用反射得到T的真实类型// 获取当前new的对象的泛型父类的类型ParameterizedType pt = (ParameterizedType) this.getClass().getGenericSuperclass();// 获取第一个类型参数的真实类型this.clazz = (Class<T>) pt.getActualTypeArguments()[0];System.out.println("clazz--->" + clazz);// 第一个this代表BaseDaoImpl的子类,第二个this代表BaseDaoImpl}/** * 获取当前的可用session对象 * * @return */protected Session getSession() {return sessionFactory.getCurrentSession();}@Overridepublic void save(T entity) {getSession().save(entity);}@Overridepublic void delete(Integer id) {Object obj = getById(id);if (obj != null) {getSession().delete(obj);}}@Overridepublic void update(T entity) {getSession().update(entity);}@Overridepublic T getById(Integer id) {return (T) getSession().get(clazz, id);}@Overridepublic List<T> getByIds(Integer... ids) {return getSession().createQuery( //"FROM " + clazz.getSimpleName() + " WHERE id IN (:ids)") //.setParameterList("ids", ids) // 将(:id)变成集合.list();}@Overridepublic List<T> findAll() {return getSession().createQuery( //"FROM " + clazz.getSimpleName()) //.list();}}
UML类图:User和Role为2个实体类,在BaseDao中写所有Dao的共有方法,在BaseDaoImpl中实现BaseDao接口的方法,子类需要继承BaseDaoImpl即可。
在XXXDao中定义XXX所需要的特有方法。
0 0
- SSH中baseDao的写法
- 一种BaseDAO的写法
- JavaWeb之BaseDao的写法
- springboot的通用BaseDAO写法
- Java中Dao模式中两种Dao的数据库操作(BaseDao的写法)
- SSH的一个BaseDao的整合
- SSH的一个BaseDao继承HibernateDaoSupport(一)
- SSH的一个BaseDao继承HibernateDaoSupport(二)
- jQuery中ajax的写法SSH
- 通过泛型实现持久层 BaseDao 的写法
- Hibernate DAO层 的BaseDao泛型写法
- SSH BaseDao代码
- ssh框架中的basedao
- SSH抽取BaseDao
- java中连接oracle的baseDao
- ssh中的BaseDao与BaseAction
- SSH BaseDaoImpl的一般写法
- baseDao中delete方法
- swift 微信分享接口实现
- javascript console打印技
- Tomcat部署项目去除项目名和端口号通过IP地址(或域名)访问
- 通过有线网络调试进行Android应用调试
- 一种头像缓存策略
- SSH中baseDao的写法
- .NET 通过代码创建带属性的XML文档
- adb error: device offline 的处理方法
- 工程师容易犯的三个错误 (2)
- 垃圾收集真的有用么?
- (OpenCV)函数cv::partition解析
- Spring技术内幕——深入解析Spring架构与设计原理(一)IOC实现原理
- 处理无序树结构数据源(n复杂度查询根节点)
- 【CodeForces】[610B]Vika and Squares