(五)Hibernate的增删改查操作(2)
接上一章节 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)的更多相关文章
- (四)Hibernate的增删改查操作(1)
Hiberntae的查找操作有多种: 1. 使用Criteria接口查询 Query_Criteria.java package action; import java.util.ArrayList ...
- (六)Hibernate的增删改查操作(3)
一.在Hibernate中使用原生SQL语句 sql语句面向的是数据库,所以sql语句中对应的不再是bean了,比如sql="select * from user" 在hql中 ...
- Hibernate5笔记2--单表的增删改查操作
单表的增删改查操作: (1)定义获取Session和SessionFactory的工具类: package com.tongji.utils; import org.hibernate.Session ...
- (转)SQLite数据库增删改查操作
原文:http://www.cnblogs.com/linjiqin/archive/2011/05/26/2059182.html SQLite数据库增删改查操作 一.使用嵌入式关系型SQLite数 ...
- Android SQLite 数据库 增删改查操作
Android SQLite 数据库 增删改查操作 转载▼ 一.使用嵌入式关系型SQLite数据库存储数据 在Android平台上,集成了一个嵌入式关系型数据库--SQLite,SQLite3支持NU ...
- Scala对MongoDB的增删改查操作
=========================================== 原文链接: Scala对MongoDB的增删改查操作 转载请注明出处! ==================== ...
- python 全栈开发,Day124(MongoDB初识,增删改查操作,数据类型,$关键字以及$修改器,"$"的奇妙用法,Array Object 的特殊操作,选取跳过排序,客户端操作)
一.MongoDB初识 什么是MongoDB MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写.旨在为 WEB 应用提供可扩展的高性能数据存储解决方案. MongoDB 是一个介 ...
- 如何搭建一个WEB服务器项目(二)—— 对数据库表进行基本的增删改查操作
使用HibernateTemplate进行增删改查操作 观前提示:本系列文章有关服务器以及后端程序这些概念,我写的全是自己的理解,并不一定正确,希望不要误人子弟.欢迎各位大佬来评论区提出问题或者是指出 ...
- Go微服务框架go-kratos实战03:使用 gorm 实现增删改查操作
一.简介 在上一篇文章 go-kratos实战02 中,详细介绍了用 kratos 编写项目代码的步骤.这篇就在上篇基础上,再结合 Go 数据库操作库 gorm 一步一步来实现一个简单的增删改查操作. ...
随机推荐
- Matlab注释的几个方法
Matlab最简单的注释当然是 %x= %这是注释,无法运行 x= %结果为2 然而%只能注释一行,如何注释更加快捷简便地注释多行呢? %{ .这就是传说中的多行注释 .成功! %} 经常需要调试程序 ...
- 到达型01背包---P1504 积木城堡
P1504 积木城堡 题解 到达型01背包 对于每一组城堡,它可以到达一些高度 但是我们要求的是所有背包可以到达的公共高度的最大值 f[ i ] 表示对于一组城堡,能否到达高度 j ,然后我们跑 n ...
- Tosca 注意事项(持续更新)
#浏览器不能同时打开两个,不然不知道选哪个 #浏览器必须是100% 不能zoom in zoom out #浏览器 internet options 必须要配置,不然跑的很慢 照着这个配 https ...
- Vue项目中的http请求统一管理
module.exports = { dev: { // Paths assetsSubDirectory: '/', assetsPublicPath: '/', proxyTable: { /op ...
- Vue 相关开源项目库汇总
element ★9395 - 饿了么出品的Vue2的web UI工具套件 Vux ★6835 - 基于Vue和WeUI的组件库 vueAdmin ★569 - 基于vuejs2和element的简单 ...
- Android:修改连接到AP端显示的设备名
一.Android系统代码中实现设备名分配 1. \frameworks\base\services\core\java\com\android\server\ConnectivityService. ...
- 阶段5 3.微服务项目【学成在线】_day07 课程管理实战_01-我的课程-需求分析与PageHelper技术
1 我的课程 1.1需求分析 课程添加完成后可通过我的课程进入课程修改页面,此页面显示我的课程列表,如下图所示,可分页查询. 注意:由于课程图片服务器没有搭建,这里在测试时图片暂时无法显示. 上边的查 ...
- STL函数适配器
一:适配器简介 C++中有三类适配器,分别是容器适配器,迭代器适配器和函数适配器,这里主要介绍函数适配器. (一)函数适配器简介 STL中已经定义了大量的函数对象,但是有时候需要对函数返回值进行进一步 ...
- Linux -- 管理锁争用(翻译)
在多线程应用中,程序员会使用互斥锁(mutex)来同步线程进入可访问共享资源的代码区域的行为.受这些锁保护的代码区域被称为关键代码段(Critical Section).如果关键代码段中已存在一个线程 ...
- JBPM使用
jbpm+mysql5.7 https://blog.csdn.net/tyn243222791/article/details/79033555