人事管理系统之基本增删改查的实现以及BaseDao的抽取和封装
来源:互联网 发布:二元期权作弊软件 编辑:程序博客网 时间:2024/06/05 16:25
1.问题描述
对于不同的对象我们都要进行基本的增删改查的操作,这样的话就会写许多重复的代码,所以我们可以把这些公共的方法抽取出来放入BaseDao和BaseDaoImp,我们其他的接口和实现类就只要去继承和实现BaseDao和BaseDaoImp而不需要去自己重复写同样的代码了。
2.UML类图
3.实现细节和代码
public class BaseDaoImp<T> implements IBaseDao<T>{@Resourceprivate SessionFactory sessionFactory;private Class<T> clazz;/** * 用(调用者的类)实现类的类型获取当前的类类型 */public BaseDaoImp(){//this.getClass() 子类的类型 反射技术得到T的真实类型ParameterizedType pt = (ParameterizedType)this.getClass().getGenericSuperclass();//获取当前new的对象的泛型的父类类型this.clazz=(Class<T>) pt.getActualTypeArguments()[0];//获取第一个类型参数的真实类型}/** * 让子类也能获取当前session * @return */protected Session getSession(){return sessionFactory.getCurrentSession();}@Overridepublic void save(T entity) {getSession().save(entity);}@Overridepublic void delete(Long id) {Object obj=getById(id);if(obj!=null){//删除一个对象getSession().delete(obj);}}@Overridepublic void update(T t) {getSession().update(t);}@Overridepublic T getById(Long id) {if(id==null){return null;}return (T) getSession().get(clazz, id);}@Overridepublic List<T> getAll() {return getSession().createQuery("FROM "+clazz.getSimpleName()).list();}@Overridepublic List<T> getByIds(Long[] ids) {//id是个数组设置parameterList参数return getSession().createQuery("FORM User where id IN(:ids)").setParameterList("ids", ids).list();}细节:1.在BaseDao中我们不好指定某个具体的类型因为实现类不同,所一在这里我们用到了泛型,当我们需要操作某个对象时只需要把这个对象的类型来取代这个泛型就行。
2.我们使用的方法来操作对象时需要知道他的类型是什么,但是在这里我们并不知道具体的实现类(子类类型)是什么(在这里用的是泛型T代替)所以我们需要用到反射的技术得到具体的子类类型。(也就是构造函数的内容)。
阅读全文
0 0
- 人事管理系统之基本增删改查的实现以及BaseDao的抽取和封装
- BaseDao增删改查自动化的制作
- 【SSH网上商城项目实战02】基本增删查改、Service和Action的抽取以及使用注解替换xml
- 【SSH网上商城项目实战02】基本增删查改、Service和Action的抽取以及使用注解替换xml
- 【SSH网上商城项目实战02】基本增删查改、Service和Action的抽取以及使用注解替换xml
- Hibernate4 一个baseDao的封装,包含一些通用的增删改查方法
- JavaScript之实现基本的增删改查功能
- javaScript之实现基本的增删改查功能
- Hibernate实现增删改查以及和JDBC的关系
- JAVAWEB开发之mybatis详解(一)——mybatis的入门(实现增删改查操作)、自定义别名、抽取代码块以及动态SQL的使用
- JAVAWEB开发之mybatis详解(一)——mybatis的入门(实现增删改查操作)、自定义别名、抽取代码块以及动态SQL的使用
- hibernate4 封装BaseDao增删改查以及分页,,支持jdk1.7,不支持jdk1.8
- 基本的增删改查
- Hibernate的手动基本配置和DAO类增删改查方法的封装
- Hibernate的手动基本配置和DAO类增删改查方法的封装
- thinkPHP项目部署以及基本模型的增删改查
- SqlHelper类实现增删改查的封装
- SSH中增删改查的封装实现
- Excel-统计不重复数据的个数,设置单元格不允许出现重复数据
- 我是如何学习安卓开发的
- Android源码解析之动态注册广播接收器的过程分析
- 【Spring笔记】1.初识Spring
- REFERENCES (updating)
- 人事管理系统之基本增删改查的实现以及BaseDao的抽取和封装
- Attempt to invoke virtual method 'android.content.Context cn.bmob.v3.BmobWrapper.getApplicationCont
- Java历史版本下载【新】
- python脚本实现批量更新数据库中字段值
- java中Lock的用法以及Lock与synchronized的区别
- 微信小程序获取formId
- 编译安装及运行单目ORBSLAM2在Ubuntu14.04
- 驱动的基础
- 苹果内购demo