BaseDao的设计思路
来源:互联网 发布:js button 隐藏 编辑:程序博客网 时间:2024/05/21 10:19
package com.zj.oa.base;import java.util.List;public interface BaseDao<T> { /** * 保存实体 * @param entity */ void save(T entity); /** * 删除实体 * @param id */ void delete(Long id); /** * 更新实体 * @param entity */ void update(T entity); /** * 按id查询 * @param id * @return */ T getById(Long id); /** * 按id查询 * @param ids * @return */ List<T> getByIds(Long[] ids); /** * 查询所有 * @return */ List<T> findAll();}
package com.zj.oa.dao;import com.yangbo.oa.base.*;import com.yangbo.oa.domain.*;public interface UserDao extends BaseDao<User> {}
package com.zj.oa.dao;import com.yangbo.oa.base.*;import com.yangbo.oa.domain.*;public interface RoleDao extends BaseDao<Role>{ }
package com.zj.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> { @Resource private SessionFactory sessionFactory; private Class<T> clazz; public BaseDaoImpl(){ //使用反射技术得到T的真实类型 //获取当前new的对象的泛型的父类 ParameterizedType pt =(ParameterizedType) this.getClass().getGenericSuperclass(); //获取第一个类型参数的真实类型 this.clazz = (Class<T>) pt.getActualTypeArguments()[0]; System.out.println("clazz--->"+clazz); } /** * 获取当前可用的Session对象 * @return */ protected Session getSession(){ return sessionFactory.getCurrentSession(); } public void delete(Long id) { Object obj = getById(id); if(obj!=null){ getSession().delete(obj); } } @SuppressWarnings("unchecked") public List<T> findAll() { return getSession().createQuery( "FROM "+clazz.getSimpleName()) .list(); } @SuppressWarnings("unchecked") public T getById(Long id) { return (T)getSession().get(clazz, id); } @SuppressWarnings("unchecked") public List<T> getByIds(Long[] ids) { return getSession().createQuery( "FROM User WHERE id IN (:ids)") .setParameterList("ids",ids) .list(); } public void save(T entity) { getSession().save(entity); } public void update(T entity) { // TODO Auto-generated method stub }}
package com.zj.oa.dao.impl;import java.util.List;import com.yangbo.oa.base.BaseDaoImpl;import com.yangbo.oa.dao.UserDao;import com.yangbo.oa.domain.User;public class UserDaoImpl extends BaseDaoImpl<User> implements UserDao{}
package com.zj.oa.dao.impl;import java.util.List;import com.yangbo.oa.base.BaseDaoImpl;import com.yangbo.oa.dao.RoleDao;import com.yangbo.oa.domain.Role;public class RoleDaoImpl extends BaseDaoImpl<Role> implements RoleDao{}
0 0
- BaseDao的设计思路
- BaseDao的设计思路---接口编程
- BaseDao设计思路
- OA中BaseDao抽象设计思路梳理
- 万能的BaseDao设计
- BaseDao设计
- 通用BaseDao设计
- BaseDao接口设计
- 基于hibernate的BaseDao及其实现类的设计
- 基于hibernate的BaseDao及其实现类的设计
- 初始的设计思路
- Mysql的设计思路
- 设计框架的思路
- 俄罗斯方块的设计思路
- 利用反射来设计BaseDao
- Hibernate常用的BaseDao
- BaseDao 的设置
- BaseDao的方法不起作用
- Java抽象类
- 题目975 关于521
- 在线web表单设计器
- Java浅尝
- 数据结构实验之查找七:线性之哈希表
- BaseDao的设计思路
- poj2777 第一道真正意义上完全自己做出来的线段树
- 初体验AutoLayout(一)
- Catch That Cow
- 2016.7.29终于弄清楚的static关键字
- 如何去掉系统ActionBar
- Java类加载器
- 解析 IllegalStateException--"Fragment already active"
- poj3126