• 接上一章节 HQL的预编译语句

HIbernate中的预编译与Spring的预编译的处理差不多。
 
  1:使用标准的?
 
  2:使用命名参数
 
   2.1:使用名称逐个设置。
 
    2.2:使用Map(key的值等于参数的名称)
 
    2.3:使用Bean(属性的名称等于参数的名称)

案例一:Query_HQL_Prepared.java

  1. package action;
  2.  
  3. import java.util.HashMap;
  4. import java.util.List;
  5. import java.util.Map;
  6.  
  7. import org.hibernate.Query;
  8. import org.hibernate.Session;
  9. import org.hibernate.Transaction;
  10.  
  11. import bean.User;
  12. import util.HibernateUtil;
  13.  
  14. /**
  15. * 本类测试HQL的预处理指令
  16. *
  17. * HIbernate中的预编译与Spring的预编译的处理差不多。
  18. *
  19. * 1:使用标准的?
  20. *
  21. *   2:使用命名参数
  22. *
  23. *    2.1:使用名称逐个设置。
  24. *
  25. *    2.2:使用Map(key的值等于参数的名称)
  26. *
  27. *    2.3:使用Bean(属性的名称等于参数的名称)
  28. *
  29. * @author 半颗柠檬、
  30. *
  31. */
  32. public class Query_HQL_Prepared {
  33.  
  34. public static void main(String[] args) {
  35. // Query_HQL_Prepared.one(); // 使用标准的 ?
  36. // Query_HQL_Prepared.two(); //使用名称逐个设置。
  37. // Query_HQL_Prepared.three(); // 使用Map(key的值等于参数的名称)
  38. Query_HQL_Prepared.four(); //使用Bean(属性的名称等于参数的名称)
  39. }
  40.  
  41. /*
  42. * 使用标准的?
  43. */
  44. private static void one() {
  45. Session session = null;
  46. Transaction tran = null;
  47. Query query = null;
  48. String hql = "";
  49. try {
  50.  
  51. session = HibernateUtil.getSession();
  52. tran = session.beginTransaction();
  53. hql = " select u from User u where userid<=? and userid>=? and username like ?";
  54.  
  55. /**
  56. * HQL的索引是从0开始的
  57. */
  58. query = session.createQuery(hql);
  59. query.setParameter(0, 6);
  60. query.setParameter(1, 1);
  61. query.setParameter(2, "%user%");
  62.  
  63. List<User> userList = query.list();
  64.  
  65. for (User user : userList) {
  66.  
  67. System.out.println("username=" + user.getUsername()
  68. + "\t userid=" + user.getUserid());
  69.  
  70. }
  71.  
  72. tran.commit();
  73. } catch (Exception e) {
  74. tran.rollback();
  75. e.printStackTrace();
  76.  
  77. } finally {
  78. HibernateUtil.closeSession();
  79. }
  80.  
  81. }
  82.  
  83. /**
  84. * 使用名称逐个设置
  85. */
  86. private static void two() {
  87. Session session = null;
  88. Query query = null;
  89. Transaction tran = null;
  90. String sql = "";
  91. try {
  92.  
  93. session = HibernateUtil.getSession();
  94. tran = session.beginTransaction();
  95. sql = " select u from User u where username like :username and userid>= :userid_begin and userid<= :userid_end ";
  96.  
  97. query = session.createQuery(sql);
  98. query.setString("username", "%user%");
  99. query.setInteger("userid_begin", 3);
  100. query.setInteger("userid_end", 5);
  101.  
  102. List<User> userList = query.list();
  103.  
  104. for (User user : userList) {
  105.  
  106. System.out.println("username=" + user.getUsername()
  107. + "\t userid=" + user.getUserid());
  108.  
  109. }
  110.  
  111. tran.commit();
  112. } catch (Exception e) {
  113. e.printStackTrace();
  114. tran.rollback();
  115. } finally {
  116. HibernateUtil.closeSession();
  117. }
  118.  
  119. }
  120.  
  121. /**
  122. * 使用Map(key的值等于参数的名称)
  123. */
  124. private static void three() {
  125.  
  126. Session session = null;
  127. Transaction tran = null;
  128. Query query = null;
  129. String sql = "";
  130.  
  131. try {
  132. session=HibernateUtil.getSession();
  133. tran=session.beginTransaction();
  134.  
  135. sql=" select u from User u where userid>= :userid_begin and userid<= :userid_end and username like :username";
  136. query=session.createQuery(sql);
  137.  
  138. Map<String,Object> sqlMap=new HashMap<String,Object>();
  139. sqlMap.put("userid_begin", 3);
  140. sqlMap.put("userid_end",5);
  141. sqlMap.put("username", "%user%");
  142.  
  143. query.setProperties(sqlMap);
  144.  
  145. List<User> userList = query.list();
  146.  
  147. for (User user : userList) {
  148.  
  149. System.out.println("username=" + user.getUsername()
  150. + "\t userid=" + user.getUserid());
  151.  
  152. }
  153.  
  154. tran.commit();
  155. } catch (Exception e) {
  156. e.printStackTrace();
  157. tran.rollback();
  158. } finally {
  159. HibernateUtil.closeSession();
  160. }
  161.  
  162. }
  163.  
  164. /**
  165. * 使用Bean(属性的名称等于参数的名称)
  166. */
  167. private static void four() {
  168.  
  169. Session session = null;
  170. Query query = null;
  171. Transaction tran = null;
  172. String sql="";
  173.  
  174. try {
  175. session=HibernateUtil.getSession();
  176. tran=session.beginTransaction();
  177.  
  178. sql=" select u from User u where username like :username and userid>= :userid_begin and userid<= :userid_end ";
  179.  
  180. User user=new User();
  181. user.setUsername("%user%");
  182. user.setUserid_begin(3); //User bean中一定要有userid_begin和userid_end属性,且要有get和set方法
  183. user.setUserid_end(5);
  184.  
  185. query=session.createQuery(sql);
  186. query.setProperties(user);
  187.  
  188. List<User> userList = query.list();
  189.  
  190. for (User use1r : userList) {
  191.  
  192. System.out.println("username=" + use1r.getUsername()
  193. + "\t userid=" + use1r.getUserid());
  194.  
  195. }
  196.  
  197. tran.commit();
  198. } catch (Exception e) {
  199. e.printStackTrace();
  200. tran.rollback();
  201. }finally{
  202. HibernateUtil.closeSession();
  203. }
  204. }
  205. }

(五)Hibernate的增删改查操作(2)的更多相关文章

  1. (四)Hibernate的增删改查操作(1)

    Hiberntae的查找操作有多种: 1.  使用Criteria接口查询 Query_Criteria.java package action; import java.util.ArrayList ...

  2. (六)Hibernate的增删改查操作(3)

    一.在Hibernate中使用原生SQL语句 sql语句面向的是数据库,所以sql语句中对应的不再是bean了,比如sql="select * from user"   在hql中 ...

  3. Hibernate5笔记2--单表的增删改查操作

    单表的增删改查操作: (1)定义获取Session和SessionFactory的工具类: package com.tongji.utils; import org.hibernate.Session ...

  4. (转)SQLite数据库增删改查操作

    原文:http://www.cnblogs.com/linjiqin/archive/2011/05/26/2059182.html SQLite数据库增删改查操作 一.使用嵌入式关系型SQLite数 ...

  5. Android SQLite 数据库 增删改查操作

    Android SQLite 数据库 增删改查操作 转载▼ 一.使用嵌入式关系型SQLite数据库存储数据 在Android平台上,集成了一个嵌入式关系型数据库--SQLite,SQLite3支持NU ...

  6. Scala对MongoDB的增删改查操作

    =========================================== 原文链接: Scala对MongoDB的增删改查操作 转载请注明出处! ==================== ...

  7. python 全栈开发,Day124(MongoDB初识,增删改查操作,数据类型,$关键字以及$修改器,"$"的奇妙用法,Array Object 的特殊操作,选取跳过排序,客户端操作)

    一.MongoDB初识 什么是MongoDB MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写.旨在为 WEB 应用提供可扩展的高性能数据存储解决方案. MongoDB 是一个介 ...

  8. 如何搭建一个WEB服务器项目(二)—— 对数据库表进行基本的增删改查操作

    使用HibernateTemplate进行增删改查操作 观前提示:本系列文章有关服务器以及后端程序这些概念,我写的全是自己的理解,并不一定正确,希望不要误人子弟.欢迎各位大佬来评论区提出问题或者是指出 ...

  9. Go微服务框架go-kratos实战03:使用 gorm 实现增删改查操作

    一.简介 在上一篇文章 go-kratos实战02 中,详细介绍了用 kratos 编写项目代码的步骤.这篇就在上篇基础上,再结合 Go 数据库操作库 gorm 一步一步来实现一个简单的增删改查操作. ...

随机推荐

  1. Matlab注释的几个方法

    Matlab最简单的注释当然是 %x= %这是注释,无法运行 x= %结果为2 然而%只能注释一行,如何注释更加快捷简便地注释多行呢? %{ .这就是传说中的多行注释 .成功! %} 经常需要调试程序 ...

  2. 到达型01背包---P1504 积木城堡

    P1504 积木城堡 题解 到达型01背包 对于每一组城堡,它可以到达一些高度 但是我们要求的是所有背包可以到达的公共高度的最大值 f[ i ] 表示对于一组城堡,能否到达高度 j ,然后我们跑 n ...

  3. Tosca 注意事项(持续更新)

    #浏览器不能同时打开两个,不然不知道选哪个 #浏览器必须是100% 不能zoom in zoom out #浏览器 internet options 必须要配置,不然跑的很慢 照着这个配  https ...

  4. Vue项目中的http请求统一管理

    module.exports = { dev: { // Paths assetsSubDirectory: '/', assetsPublicPath: '/', proxyTable: { /op ...

  5. Vue 相关开源项目库汇总

    element ★9395 - 饿了么出品的Vue2的web UI工具套件 Vux ★6835 - 基于Vue和WeUI的组件库 vueAdmin ★569 - 基于vuejs2和element的简单 ...

  6. Android:修改连接到AP端显示的设备名

    一.Android系统代码中实现设备名分配 1. \frameworks\base\services\core\java\com\android\server\ConnectivityService. ...

  7. 阶段5 3.微服务项目【学成在线】_day07 课程管理实战_01-我的课程-需求分析与PageHelper技术

    1 我的课程 1.1需求分析 课程添加完成后可通过我的课程进入课程修改页面,此页面显示我的课程列表,如下图所示,可分页查询. 注意:由于课程图片服务器没有搭建,这里在测试时图片暂时无法显示. 上边的查 ...

  8. STL函数适配器

    一:适配器简介 C++中有三类适配器,分别是容器适配器,迭代器适配器和函数适配器,这里主要介绍函数适配器. (一)函数适配器简介 STL中已经定义了大量的函数对象,但是有时候需要对函数返回值进行进一步 ...

  9. Linux -- 管理锁争用(翻译)

    在多线程应用中,程序员会使用互斥锁(mutex)来同步线程进入可访问共享资源的代码区域的行为.受这些锁保护的代码区域被称为关键代码段(Critical Section).如果关键代码段中已存在一个线程 ...

  10. JBPM使用

    jbpm+mysql5.7 https://blog.csdn.net/tyn243222791/article/details/79033555