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

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

案例一:Query_HQL_Prepared.java

package action;

import java.util.HashMap;
import java.util.List;
import java.util.Map; import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction; import bean.User;
import util.HibernateUtil; /**
* 本类测试HQL的预处理指令
*
* HIbernate中的预编译与Spring的预编译的处理差不多。
*
* 1:使用标准的?
*
*   2:使用命名参数
*
*    2.1:使用名称逐个设置。
*
*    2.2:使用Map(key的值等于参数的名称)
*
*    2.3:使用Bean(属性的名称等于参数的名称)
*
* @author 半颗柠檬、
*
*/
public class Query_HQL_Prepared { public static void main(String[] args) {
// Query_HQL_Prepared.one(); // 使用标准的 ?
// Query_HQL_Prepared.two(); //使用名称逐个设置。
// Query_HQL_Prepared.three(); // 使用Map(key的值等于参数的名称)
Query_HQL_Prepared.four(); //使用Bean(属性的名称等于参数的名称)
} /*
* 使用标准的?
*/
private static void one() {
Session session = null;
Transaction tran = null;
Query query = null;
String hql = "";
try { session = HibernateUtil.getSession();
tran = session.beginTransaction();
hql = " select u from User u where userid<=? and userid>=? and username like ?"; /**
* HQL的索引是从0开始的
*/
query = session.createQuery(hql);
query.setParameter(0, 6);
query.setParameter(1, 1);
query.setParameter(2, "%user%"); List<User> userList = query.list(); for (User user : userList) { System.out.println("username=" + user.getUsername()
+ "\t userid=" + user.getUserid()); } tran.commit();
} catch (Exception e) {
tran.rollback();
e.printStackTrace(); } finally {
HibernateUtil.closeSession();
} } /**
* 使用名称逐个设置
*/
private static void two() {
Session session = null;
Query query = null;
Transaction tran = null;
String sql = "";
try { session = HibernateUtil.getSession();
tran = session.beginTransaction();
sql = " select u from User u where username like :username and userid>= :userid_begin and userid<= :userid_end "; query = session.createQuery(sql);
query.setString("username", "%user%");
query.setInteger("userid_begin", 3);
query.setInteger("userid_end", 5); List<User> userList = query.list(); for (User user : userList) { System.out.println("username=" + user.getUsername()
+ "\t userid=" + user.getUserid()); } tran.commit();
} catch (Exception e) {
e.printStackTrace();
tran.rollback();
} finally {
HibernateUtil.closeSession();
} } /**
* 使用Map(key的值等于参数的名称)
*/
private static void three() { Session session = null;
Transaction tran = null;
Query query = null;
String sql = ""; try {
session=HibernateUtil.getSession();
tran=session.beginTransaction(); sql=" select u from User u where userid>= :userid_begin and userid<= :userid_end and username like :username";
query=session.createQuery(sql); Map<String,Object> sqlMap=new HashMap<String,Object>();
sqlMap.put("userid_begin", 3);
sqlMap.put("userid_end",5);
sqlMap.put("username", "%user%"); query.setProperties(sqlMap); List<User> userList = query.list(); for (User user : userList) { System.out.println("username=" + user.getUsername()
+ "\t userid=" + user.getUserid()); } tran.commit();
} catch (Exception e) {
e.printStackTrace();
tran.rollback();
} finally {
HibernateUtil.closeSession();
} } /**
* 使用Bean(属性的名称等于参数的名称)
*/
private static void four() { Session session = null;
Query query = null;
Transaction tran = null;
String sql=""; try {
session=HibernateUtil.getSession();
tran=session.beginTransaction(); sql=" select u from User u where username like :username and userid>= :userid_begin and userid<= :userid_end "; User user=new User();
user.setUsername("%user%");
user.setUserid_begin(3); //User bean中一定要有userid_begin和userid_end属性,且要有get和set方法
user.setUserid_end(5); query=session.createQuery(sql);
query.setProperties(user); List<User> userList = query.list(); for (User use1r : userList) { System.out.println("username=" + use1r.getUsername()
+ "\t userid=" + use1r.getUserid()); } tran.commit();
} catch (Exception e) {
e.printStackTrace();
tran.rollback();
}finally{
HibernateUtil.closeSession();
}
}
}

(五)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. Vue学习手记04-跨域问题

    01-安装axios,指令(npm install --save axios)02-解决跨域问题 在config=>中创建一个新的文件proxyConfig.js module.exports ...

  2. 【Maven】为什么Maven dependencies有的jar包显示为灰色?

    因为它们的scope被限制住了,放开就恢复为亮白色. 来两张图片比对一下就清楚了: 没有限制scope,是正常的亮白色. 限制scope为test,显示为灰黑色. 其实颜色不重要,重要的是scope会 ...

  3. PHP操作文件常用函数

    [获取文件信息的函数] basename($path[,扩展名]) 返回文件路径中去掉路径后的文件名称."/root/a.txt"输出a.txt;带上.txt输出a. dirnam ...

  4. KL距离(相对熵)

    KL距离,是Kullback-Leibler差异(Kullback-Leibler Divergence)的简称,也叫做相对熵(Relative Entropy).它衡量的是相同事件空间里的两个概率分 ...

  5. 013-多线程-基础-Fork/Join框架、parallelStream讲解

    一.概述 Fork/Join框架是Java7提供了的一个用于并行执行任务的框架, 是一个把大任务分割成若干个小任务,最终汇总每个小任务结果后得到大任务结果的框架. 它同ThreadPoolExecut ...

  6. 阶段5 3.微服务项目【学成在线】_day18 用户授权_15-细粒度授权-我的课程细粒度授权-实现

    先定义接口 实现接口 service 需要通过conpanyId去查询课程的列表 定义dao 要查课程的图片 名称 等相关信息.所以使用Mybatis来实现 定义Mapper 看这个dao里面方法在哪 ...

  7. 123457123456#1#-----com.threeapp.qianShuiTingYX01-----潜水艇跑酷游戏01

    com.threeapp.qianShuiTingYX01-----潜水艇跑酷游戏01

  8. 雨田家园 delphi 拆分字符串

    最近在使用Delphi开发一种应用系统的集成开发环境.其中需要实现一个字符串拆分功能,方法基本原型应该是:procedure SplitString(src: string ; ch: Char; v ...

  9. Page.ClientScript、ClientScript、ScriptManager、ClientScriptManager等的详细解说

    在 .aspx.cs页面中,输入这四个东西:Page.ClientScript.ClientScript.ScriptManager.ClientScriptManager,均会出提示,表示它们均可用 ...

  10. Python之汉诺塔递归运算

    汉诺塔问题是一个经典的问题.汉诺塔(Hanoi Tower),又称河内塔,源于印度一个古老传说.大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘.大梵天命令婆 ...