反射(DAO层的设计)<学习随笔>
2016-05-08 00:00
417 查看
DAO
public interface BaseDao<T> {
void save(T entity);
void delete(Integer id);
void update(T entity);
T getById(Integer id);
List<T> getByIds(Integer[] ids);
List<T> findAll();
PageBean getPageBean(int pageNum,HqlHelper hqlHelper);//分页
}
DAOIMPL
public abstract class BaseDaoImpl<T> implements BaseDao<T> {
@Resource
private SessionFactory sessionFactory;//session工厂
private Class<T> clazz;
public BaseDaoImpl(){
ParameterizedType pt = (ParameterizedType) this.getClass().getGenericSuperclass(); // 获取父类类名
this.clazz =(Class<T>) pt.getActualTypeArguments()[0]; //取出类
}
/*获取当前可用session*/
protected Session getSession() {
return sessionFactory.getCurrentSession();
}
@Override
public void save(T entity) {
getSession().save(entity);
}
@Override
public void delete(Integer id) {
Object obj = getById(id);
if(obj!=null){
getSession().delete(obj);
}
}
@Override
public void update(T entity) {
getSession().update(entity);
}
@Override
public T getById(Integer id) {
if(id==null){
return null;
}else{
return (T) getSession().get(clazz, id);
}
}
@Override
public List<T> getByIds(Integer[] ids) {
if(ids==null||ids.length==0){
return Collections.EMPTY_LIST;
}else{
return getSession().createQuery(//
"FROM"+clazz.getSimpleName()+"WHERE id IN (:ids)")//
.setParameterList("ids", ids)//
.list();
}
}
@Override
public List<T> findAll() {
return getSession().createQuery(//
"FROM " + clazz.getSimpleName())//
.list();
}
public interface BaseDao<T> {
void save(T entity);
void delete(Integer id);
void update(T entity);
T getById(Integer id);
List<T> getByIds(Integer[] ids);
List<T> findAll();
PageBean getPageBean(int pageNum,HqlHelper hqlHelper);//分页
}
DAOIMPL
public abstract class BaseDaoImpl<T> implements BaseDao<T> {
@Resource
private SessionFactory sessionFactory;//session工厂
private Class<T> clazz;
public BaseDaoImpl(){
ParameterizedType pt = (ParameterizedType) this.getClass().getGenericSuperclass(); // 获取父类类名
this.clazz =(Class<T>) pt.getActualTypeArguments()[0]; //取出类
}
/*获取当前可用session*/
protected Session getSession() {
return sessionFactory.getCurrentSession();
}
@Override
public void save(T entity) {
getSession().save(entity);
}
@Override
public void delete(Integer id) {
Object obj = getById(id);
if(obj!=null){
getSession().delete(obj);
}
}
@Override
public void update(T entity) {
getSession().update(entity);
}
@Override
public T getById(Integer id) {
if(id==null){
return null;
}else{
return (T) getSession().get(clazz, id);
}
}
@Override
public List<T> getByIds(Integer[] ids) {
if(ids==null||ids.length==0){
return Collections.EMPTY_LIST;
}else{
return getSession().createQuery(//
"FROM"+clazz.getSimpleName()+"WHERE id IN (:ids)")//
.setParameterList("ids", ids)//
.list();
}
}
@Override
public List<T> findAll() {
return getSession().createQuery(//
"FROM " + clazz.getSimpleName())//
.list();
}
相关文章推荐
- zzuli OJ 1066: 字符分类统计
- MySQL语句汇总
- zzuli OJ 1086: ASCII码排序(多实例测试)
- Struts2值栈的相关操作
- 支付宝异步通知(notify_url)与return_url.
- Java 数据类型和 MySql 数据类型对应一览表
- zzuli OJ 1085: 求奇数的乘积(多实例测试)
- Spark定制班第3课:通过案例对SparkStreaming透彻理解三板斧之三:解密Spark Streaming运行机制和架构进阶之Job和容错
- java+Struts2生成验证码
- zzuli OJ 1016: 银行利率
- zzuli OJ 1007: 鸡兔同笼
- zzuli OJ 1093: 验证哥德巴赫猜想(函数专题)
- zzuli OJ 1077: 字符串加密
- zzuli OJ 1025: 最大字符
- zzuli OJ 1033: 五级制成绩
- 将两个非递减的有序链表合并为一个非递增的有序链表(C语言编程实现)
- zzuli OJ 1123: 最佳校友
- 基础总结篇之一:Activity生命周期
- java常用集合类详解
- Mybatis利用log4j输出sql