博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
泛型总结--待续
阅读量:7045 次
发布时间:2019-06-28

本文共 3917 字,大约阅读时间需要 13 分钟。

  http://www.cnblogs.com/lwbqqyumidi/p/3837629.html

http://www.blogjava.net/icewee/archive/2012/04/27/376741.html  

1 package com.zq.www.common;  2   3 import java.lang.reflect.ParameterizedType;  4 import java.util.List;  5   6 import javax.annotation.Resource;  7   8 import org.hibernate.Query;  9 import org.hibernate.Session; 10 import org.hibernate.SessionFactory; 11 import org.springframework.transaction.annotation.Transactional; 12  13 //使用泛型 14 @Transactional  15 public class BaseDAO
{ 16 17 //spring里的注解,实现自动注入(自动new) 18 @Resource 19 private SessionFactory sessionFactory; 20 21 22 /* 23 * 得到session,所有增删改查都从session开始 24 */ 25 26 public SessionFactory getSessionFactory() { 27 return sessionFactory; 28 } 29 30 31 public void setSessionFactory(SessionFactory sessionFactory) { 32 this.sessionFactory = sessionFactory; 33 } 34 35 public Session gs() { 36 return this.sessionFactory.getCurrentSession(); 37 } 38 39 40 41 /* 42 * 根据T得到真正的class类型,使用反射 43 */ 44 protected Class
entityClass; 45 46 protected Class getEntityClass() { 47 if (entityClass == null) { 48 entityClass = (Class
) ((ParameterizedType) getClass() 49 .getGenericSuperclass()).getActualTypeArguments()[0]; 50 } 51 return entityClass; 52 } 53 54 55 56 57 /* 58 * 添加 59 */ 60 @Transactional 61 public void add(T t) { 62 gs().save(t); 63 } 64 65 /* 66 * 更新 67 */ 68 @Transactional 69 public void update(T t) { 70 gs().update(t); 71 } 72 73 /* 74 * 删除 75 */ 76 @Transactional 77 public void delete(Integer id) { 78 gs().delete(this.get(id)); 79 } 80 81 82 /* 83 * 查询 84 */ 85 @Transactional 86 public T get(Integer id) { 87 T instance = (T) gs().get(getEntityClass(), id); 88 return instance; 89 90 } 91 92 93 94 /* 95 * 自动判断添加或修改,保存 96 */ 97 @Transactional 98 public void save(T t) { 99 gs().saveOrUpdate(t);100 }101 102 103 /*104 * 查询全部105 */106 @Transactional107 public List
listall() {108 List
result=gs().createCriteria(getEntityClass()).list();109 return result;110 }111 112 113 /*114 * 通用查询115 */ 116 @Transactional117 public List
getListByHQL(final String hqlString, final List values) {118 Query query = gs().createQuery(hqlString);119 if (values != null) {120 Object[] vvs = values.toArray(new Object[values.size()]);121 for (int i = 0; i < vvs.length; i++) {122 query.setParameter(i, vvs[i]);123 }124 }125 return query.list();126 }127 128 /* 执行复杂的sql查询129 * 130 * 得到一列:List
131 * 132 * 得到多列:List
133 */134 @Transactional(readOnly = true)135 public List getListBySQL(final String sqlString, final List values) {136 Query query = gs().createSQLQuery(sqlString);137 if (values != null) {138 Object[] vvs = values.toArray(new Object[values.size()]);139 for (int i = 0; i < vvs.length; i++) {140 query.setParameter(i, vvs[i]);141 }142 }143 return query.list();144 }145 146 147 148 /* 执行复杂的sql更新、删除、添加149 * 150 * 得到受影响的行数151 * 152 */153 @Transactional154 public Integer executeSQL(final String sqlString, final List values) {155 Query query = gs().createSQLQuery(sqlString);156 if (values != null) {157 Object[] vvs = values.toArray(new Object[values.size()]);158 for (int i = 0; i < vvs.length; i++) {159 query.setParameter(i, vvs[i]);160 }161 }162 return query.executeUpdate();163 }164 165 166 }

//

List
result=gs().createCriteria(getEntityClass()).list();??????

 

转载于:https://www.cnblogs.com/zzzzw/p/4954970.html

你可能感兴趣的文章
定制你的敏捷方法:以结果为导向
查看>>
关于Visual Studio 2019的前期详情
查看>>
PWA即将推向所有Chrome平台
查看>>
官宣!微软宣布桌面版 Edge将基于Chromium进行开发\n
查看>>
运用供应链管理实现更快速、更高质量的交付
查看>>
3·15曝光丨智能机器人一年拨打40亿个骚扰电话,6亿人信息已遭泄露!
查看>>
ASP.NET Core 2.1带来SignalR、Razor类库
查看>>
敏捷2016大会主题演讲:现代敏捷
查看>>
经典Java面试题解析——谈谈你对Java平台的理解?
查看>>
从对敏捷的“船货崇拜”到成为敏捷组织
查看>>
WebAssembly Studio:Mozilla提供的WASM工具
查看>>
Visual Studio 15改进C++工程加载
查看>>
雷军定AI+IoT为小米核心战略,牵手宜家推进生态布局
查看>>
移动开发的罗曼蒂克消亡史
查看>>
独家解读 | 滴滴机器学习平台架构演进之路
查看>>
Kotlin语言1.0Beta发布,JetBrain介绍其设计理念
查看>>
继爆款超级账本后,IBM再次推出新产品
查看>>
“亲切照料”下的领域驱动设计
查看>>
在大规模系统中使用Scala
查看>>
资本冬天已至,开发者却可以着眼未来
查看>>