Hibernate的条件查询的几种方式
2019独角兽企业重金招聘Python工程师标准>>>
1、 第一种,用?占位符,如:
//登录(用?占位符)public List<UserPO> LoginUser(UserPO up)throws Exception{Session session = HibernateSessionFactory.getSession();String hql = "from UserPO where name = ? and pwd= ?";Query query = session.createQuery(hql);query.setString(0, up.getName());query.setString(1, up.getPwd());List<UserPO> list = query.list();session.close();return list;}2、用“:+命名”占位符,如:
//登录(用":命名"占位符)public List<UserPO> LoginUser2(UserPO up)throws Exception{Session session = HibernateSessionFactory.getSession();String hql = "from UserPO where name = :n and pwd= :p";Query query = session.createQuery(hql);query.setString("n", up.getName());query.setString("p", up.getPwd());List<UserPO> list = query.list();session.close();return list;}2.1、使用这种占位符还可以这样设值,如://登录(用":命名"占位符,用setParameter设值)public List<UserPO> LoginUser3(UserPO up)throws Exception{Session session = HibernateSessionFactory.getSession();String hql = "from UserPO where name = :n and pwd= :p";Query query = session.createQuery(hql);query.setParameter("n", up.getName());query.setParameter("p",up.getPwd());List<UserPO> list = query.list();session.close();return list;}使用这种方式不需要写明映射的类型,Hibernate会通过配置自动给我们转,但是由于Hibernate有两种日期格式:Date和TIMESTAMP,所以对于日期类型必须写明映射的类型。写法: 3、按照对象进行参数绑定,如://登录(用":命名"占位符,用setProperties设值,命名参数必须要与被绑定的属性名相同)public List<UserPO> LoginUser4(UserPO up)throws Exception{Session session = HibernateSessionFactory.getSession();String hql = "from UserPO where name = :name and pwd= :pwd";Query query = session.createQuery(hql);query.setProperties(up);List<UserPO> list = query.list();session.close();return list;}
4、使用条件查询(Criteria),如://登录(用条件查询 Criteria)完全脱离sql语句和hql语句public List<UserPO> LoginUser5(UserPO up)throws Exception{Session session = HibernateSessionFactory.getSession();Criteria cri = session.createCriteria(UserPO.class);cri.add(Restrictions.eq("name", up.getName()));cri.add(Restrictions.eq("pwd", up.getPwd()));List<UserPO> list = cri.list();session.close();return list;}5、离线条件查询,如:
//登录(用离线条件查询 DetachedCriteria)public List<UserPO> LoginUser6(UserPO up)throws Exception{Session session = HibernateSessionFactory.getSession();DetachedCriteria dc = DetachedCriteria.forClass(UserPO.class);dc.add(Restrictions.eq("name", up.getName()));dc.add(Restrictions.eq("pwd", up.getPwd()));Criteria cri = dc.getExecutableCriteria(session);List<UserPO> list = cri.list();session.close();return list;}使用离线可以将其写在业务层,以参数的形式传入,以减少DAO的代码。
6、分页查询:分页查询是数据库应用中的处理方式,query和criteria接口都提供了用于分页查询的方法:
1) setFirstResult(int):指定从哪一个对象开始查询,参数是索引位置,从0开始。
2) setMaxResult(int):指定一次最多查询的对象数量。
转载于:https://my.oschina.net/abbchina/blog/712289
Hibernate的条件查询的几种方式相关推荐
- Hive查询的18种方式
前言 相信大家一定对 Hive 不陌生!Hive 是基于Hadoop 的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能(HQL).Hive的优点是学习成本低,可以通 ...
- Hive查询的18种方式,你都学会了吗?
前言 大家一定对Hive不陌生吧!Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能(HQL).Hive的优点是学习成本低,可以通过类似SQ ...
- MyBatis实现模糊查询的三种方式
MyBatis实现模糊查询的三种方式 准备 模糊查询 方式一 方式二 方式三 由于#{}是占位符本身,自带单引号,所以在模糊查询时需要一些技巧. 准备 数据库表 bean 模糊查询 以查询出所有用户名 ...
- Java里模糊查询的英文_MyBatis实现模糊查询的几种方式
在学习MyBatis过程中想实现模糊查询,可惜失败了.后来上百度上查了一下,算是解决了.记录一下MyBatis实现模糊查询的几种方式. 数据库表名为test_student,初始化了几条记录,如图: ...
- tkmybatis通用mapper实现在使用Example进行查询的几种方式
如下列举四种方式,但是不止四种哦. 其中weekend方式需要升级jdk到1.8及以上. 废话不代码! 首先定义数据库表映射类: public class MybatisDemo {private L ...
- mybatis一对多查询的两种方式
user 和order 对象 package com.itheima.mybatis.pojo;import java.io.Serializable; import java.util.Date;p ...
- mysql多表查询有几种方法_多表查询有几种方式
多表查询有3种方式,分别是:1.传统方式,包括左外连接查询,右外连接查询 ,完全外链接查询:2.子查询方式,包括单行查询,多行查询:3.聚合查询方式,包括求和,平均查询,记录总数. 多表查询有3种方式 ...
- html多条件检索折叠,八种方式实现多条件匹配
围观的市民刘先生表示:我活了二十多年,看见斗图的比较多,这么无聊斗Excel使用技巧的第一次见! 为了更好的装逼,哦!不!是为了更好的分享多条件匹配的技巧,今天和大家分享如何用八种方式实现多条件匹配! ...
- 【mybatis学习记录】mybatis的各种查询 一对一关联查询(4种方式) 一对多(2种方式)
文章目录 一对一 方式一: 方式2 方式3 方式4 一对多查询(2种方式) 方式2 一对一 如:通过订单id查询订单的时候,将订单关联的用户信息也返回. 首先建库建表: 新建实体类: @Builder ...
最新文章
- React Native
- 选择最好用的PyCharm IDE
- Elasticsearch 之(24)IK分词器配置文件讲解以及自定义词库
- DEDE文章列表加上序号效果
- C# 重写WndProc 消息循环
- java如何读取自定义log4j2_spring boot自定义log4j2日志文件的实例讲解
- 【javascript高级教程】JavaScript Number 对象
- 为什么用链路聚合_H3C ComwareV7平台网络设备可靠性配置——链路聚合
- sap 测试数据生成报表
- 排序算法之八 桶排序(C++版本)
- 帆软控件焦点事件设置可用性
- 服务器专用影子系统,试试最牛X的影子系统!瞬间创建N个账号
- KY-RTI分布仿真技术:第五章 Qt程序设计
- 音质好的无线蓝牙耳机品牌?盘点音质超好的蓝牙耳机推荐
- 【JavaScript打印100,1000,10000 ......内的素数】自动打印素数
- Data Mining Machine Learning学习笔记 机器学习入门笔记 之jieba分词(中文分词)(二)
- 敏捷组织转型之路-杨锋镝
- point-wise element-wise
- 记笔记,手写与打字哪个更有效?
- 学习太极创客 — ESP8226 (七)JSON 数据通讯 一
热门文章
- 笔记本电脑字母键盘总是打出数字_笔记本电脑,这些情况都是键盘坏了,换了就能好...
- 分享一下python入门知识点-输入与输出教程,不喜勿喷
- step在c语言中什么作用,C语言step-by-step(二)(数据类型)
- 单片机会被淘汰吗?单片机现在还有用吗?
- eclipse提示jre_给新手 Java 开发者的 7 点提示 | Linux 中国
- PTA基础编程题目集-7-32 说反话-加强版
- HDU2899(二分查找+or+模拟退火算法)
- linux 简单dns搭建,搭建一个简易的DNS服务
- 计算机应用开设学校 四川,成都计算机类专业开设的院校有哪些
- 0x41.数据结构进阶 - 并查集