问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

sql 语句实现hibernate save update delete 功能

发布网友 发布时间:2022-04-09 01:23

我来回答

6个回答

懂视网 时间:2022-04-09 05:45

/** 2 * 基础查询语句 3 * 返回类型的属性字符串Sql 4 * @author: InkYi 5 * 修改时间:2016年5月11日 - 上午10:06:00<br/> 6 * 功能说明:<br/> 7 * @param clazz 8 * @return "id,name,sex....." 9 */ 10 private String baseSelectSQL(Class clazz){ 11 StringBuffer sb = new StringBuffer(); 12 Field[] fields = clazz.getDeclaredFields(); 13 for (int i = 0; i < fields.length; i++) { 14 Field field = fields[i]; 15 field.setAccessible( true ); 16 sb.append(field.getName()); 17 sb.append(", "); 18 try { 19 Object object = field.get(clazz); 20 System.out.println(object.toString()); 21 } catch (IllegalArgumentException | IllegalAccessException e) { 22 e.printStackTrace(); 23 } 24 } 25 int lastIndexOf = sb.lastIndexOf(", "); 26 sb.delete(lastIndexOf, sb.length()); 27 return sb.toString(); 28 }
 1 /**
 2  * 基础条件语句
 3  * 只返回属性不为空的属性和值
 4  * @author: InkYi
 5  * 修改时间:2016年5月11日 - 上午10:52:26<br/>
 6  * 功能说明:<br/>
 7  * @param obj
 8  * @return SELECT & DELETE-->id=‘0‘ AND name=‘inkyi‘
 9  * 
10 */
11 private String baseWhereSQL(Object obj){
12  StringBuffer sb = new StringBuffer();
13  Class<? extends Object> clazz = obj.getClass();
14  Field[] fields = clazz.getDeclaredFields();
15  try {
16  for (int i = 0; i < fields.length; i++) {
17   Field field = fields[i];
18   field.setAccessible(true);
19   String name = field.getName();
20   Object value = field.get(obj);
21   Class<?> type = field.getType();
22   if(value!=null){
23   //处理时间格式
24   if(type == Date.class){
25    value = DateUtils.dateStr((Date) value, "yyyy-MM-dd HH:mm:ss");
26    }
27   sb.append(name).append("=")
28   .append("‘").append(value).append("‘")
29   .append(" AND ");
30   }
31   }
32  } catch (IllegalArgumentException | IllegalAccessException e) {
33   e.printStackTrace();
34  }
35  int lastIndexOf = sb.lastIndexOf(" AND ");
36  sb.delete(lastIndexOf, sb.length());
37  return sb.toString();
38 }
 1 /**
 2  * 基础更新语句
 3  * 只返回属性不为空的属性和值
 4  * @author: InkYi
 5  * 修改时间:2016年5月11日 - 上午11:11:25<br/>
 6  * 功能说明:<br/>
 7  * @param obj
 8  * @return >id=‘0‘, name=‘inkyi‘, sex=‘1‘
 9 */
10 private String baseUpdateSQL(Object obj){
11  StringBuffer sb = new StringBuffer();
12  Class<? extends Object> clazz = obj.getClass();
13  Field[] fields = clazz.getDeclaredFields();
14  try {
15  for (int i = 0; i < fields.length; i++) {
16   Field field = fields[i];
17   field.setAccessible(true);
18   String name = field.getName();
19   Object value = field.get(obj);
20   Class<?> type = field.getType();
21   if(value!=null){
22   //处理时间格式
23   if(type == Date.class){
24    value = DateUtils.dateStr((Date) value, "yyyy-MM-dd HH:mm:ss");
25    }
26   sb.append(name).append("=")
27   .append("‘").append(value).append("‘")
28   .append(", ");
29   }
30   }
31  } catch (IllegalArgumentException | IllegalAccessException e) {
32   e.printStackTrace();
33  }
34  int lastIndexOf = sb.lastIndexOf(", ");
35  sb.delete(lastIndexOf, sb.length());
36  return sb.toString();
37 }

 

根据反射生成SQL语句

标签:

热心网友 时间:2022-04-09 02:53

为什么不明白原理就不能用了呢。其实,HIBERNATE就是运用了HBM.XML这个文件来映射数据库和BEAN的,中间运用了JAVA反射的机制,自动生成了SQL语句。实际上是HIBERNATE自动为你生成了SQL语句而已。如果你硬要自己用SQL的话,应该也可以用session.createSQLQuery(sql).executeUpdate()来实现你的需求

热心网友 时间:2022-04-09 04:11

它是提倡一种叫nosql的东西,它不建议大家直接写sql语句,它自己封装了一些基本的方法。它增删改,都对于从数据库orm来的类来说的。对类进行操作,以便达到增删改。

热心网友 时间:2022-04-09 05:45

先实例化个session对象
直接用session对象调用save(Object obj),load(Class class,Object obj),get(Class class,Object obj),update(Object obj) 就可以实现你要的功能了

热心网友 时间:2022-04-09 07:37

可以通过HibernateTemplate.getSession.createQuary(tsql)得到一个Quary,然后根据Quary提供的方法得到结果集,hibernate底层也是jdbc

热心网友 时间:2022-04-09 09:45

直接写sql语句就行了啊啊 代替以前的HQL
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
2019哈尔滨煤气费怎么有税? 快手删除的作品如何恢复 体育理念体育理念 有关体育的格言和理念 什么是体育理念 万里挑一算彩礼还是见面礼 绿萝扦插多少天后发芽 绿萝扦插多久发芽 扦插绿萝多久发芽 炖牛排骨的做法和配料 给人留下了不好的第一印象,日后如何弥补? 哪本武侠小说的主角叫赵轩 赵轩命运和财运 入党志愿书中支部大会通过预备党员能否转为正式党员的决议如何填写? 支部大会通过预备党员能否转为正式党员的决议 详细?? 预备党员经支部党员大会讨论,已作出转为正式党员的决议,但*还未批准,算正式党员吗?是否有表决权。 怎样填写支部大会通过预备党员能否转为正式党员的决议? 党员转正支部委员会决议怎么写 找父母借钱应该用什么样的理由 支部大会通过预备党员能否转为正式党员的决议 预备党员转正支部党员大会决议 借家长钱的理由 支部大会转正决议怎么写 忠爱无言百度云的资源谁有能共享一下嘛 支部大会通过预备党员能否转为正式党员的决议怎么写 怎么样编造理由向家人借钱? 向父母借钱,用什么理由好?不会让她们觉得你胡闹,本人已经上班 问家里要钱找什么借口.? 梦见别人给鱼没要 有什么问爸妈要钱的好理由 花飞尽归不归剧情介绍(1 主角是赵轩重生秦朝的小说? 赵轩博名字多少分? 赵轩这个名字小女孩用好不好 一本死后重生的都市小说 主角叫赵轩 谁知道啊? 有部小说主人公貌似叫赵轩!重生后带记忆!与一个叫什么雅的相恋!最后与他前世生的女儿相恋!也于前世之 赵轩是哪部武侠小说的主人公 求小说名字。忘了。都市的,主角叫赵轩,是个送快递的(时光快递),然后一天送完一份快递遇到就要下大雨 在ppt中&quot;跨幻灯片播放&quot;和&quot;剪裁音频&quot;能同时时行吗 如何实现PPT幻灯片的跨越式播放 CAD2014,安装时输入序列号:666-69696969,密钥:001F1,密钥不正确,怎么回事_百度问一问 cad2012安装密钥不对,网上的都不对,怎么办?帮帮我,谢谢! 在线等 着急 电脑菜鸟,在百度下了个cad 现在要密钥 怎么都不对!2014 64位的。谢谢各位了 我的cad2012的密钥错误怎么回事啊 就是按照上面写得啊 哪个web应用防火墙配置是比较先进的? win10下怎么启动管理员身份运行 新手机号怎么注册不了怎么办? 注册不了怎么办? 新买的手机卡不能注册怎么办? 遥控车的制造原理