Hibernate的条件查询的几种方式+查询所有的记录
条件查询
- 、 第一种,用?占位符,如:
- //登录(用?占位符)
- 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(, up.getName());
- query.setString(, up.getPwd());
- List<UserPO> list = query.list();
- session.close();
- return list;
- }
- 、用“:+命名”占位符,如:
- //登录(用":命名"占位符)
- 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,所以对于日期类型必须写明映射的类型。写法:
- 、按照对象进行参数绑定,如:
- //登录(用":命名"占位符,用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;
- }
- 、使用条件查询(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;
- }
- 、离线条件查询,如:
- //登录(用离线条件查询 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的代码。
- 、分页查询:分页查询是数据库应用中的处理方式,query和criteria接口都提供了用于分页查询的方法:
- ) setFirstResult(int):指定从哪一个对象开始查询,参数是索引位置,从0开始。
- ) setMaxResult(int):指定一次最多查询的对象数量。
查询所有记录:
- /**
- * 查询所有的记录
- */
- public static List selectAll() {
- List list = null;
- try {
- session = HibernateSessionFactory.getSession();
- Transaction tran = session.beginTransaction();
- Query q = session.createQuery("from User1");
- list = q.list();
- tran.commit();
- } catch (Exception e) {
- e.printStackTrace();
- } finally {
- HibernateSessionFactory.closeSession();
- }
- return list;
- }
Hibernate的条件查询的几种方式+查询所有的记录的更多相关文章
- MyBatis实现模糊查询的几种方式
在学习MyBatis过程中想实现模糊查询,可惜失败了.后来上百度上查了一下,算是解决了.记录一下MyBatis实现模糊查询的几种方式. 数据库表名为test_student,初始化了几条记录,如图: ...
- Hibernate 检索查询的几种方式(HQL,QBC,本地SQL,集成Spring等)
1.非集成Spring hibernate的检索方式,主要有以下五种. 1.导航对象图检索方式.(根据已经加载的对象,导航到其他对象.) 2.OID检索方式.(按照对象的OID来检索对象.) 3.HQ ...
- hibernate载入持久化对象的两种方式——get、load
一.get与load对照 在hibernate中get和load方法是依据id取得持久化对象的两种方法.但在实际使用的过程中总会把两者混淆,不知道什么情况下使用get好,什么时候使用load方法效率更 ...
- Android之——ContentResolver查询的三种方式
转载请注明出处:http://blog.csdn.net/l1028386804/article/details/47785491 今天做到一个小项目.查询手机中短信的信息,当然得去系统暴露出来的数据 ...
- SpringBoot集成Mybatis实现多表查询的两种方式(基于xml)
下面将在用户和账户进行一对一查询的基础上进行介绍SpringBoot集成Mybatis实现多表查询的基于xml的两种方式. 首先我们先创建两个数据库表,分别是user用户表和account账户表 ...
- 五 Mybatis一对一关联查询的两种方式(基于resultType&基于resultMap)
关联查询: 一个用户对应多个订单,一个订单只有一个用户 订单关联用户:两种方式 一:基于resultTYpe,一个与表关系一样的pojo实现 主表订单,从表用户 首先要有一个与关联查询表关系一样的po ...
- mORMot学习笔记2-2种方式查询数据
本例使用SqlServer 第一种方式结果放入Memo控件,,需要引用SynCommons, SynDB, SynOleDb; procedure TForm1.Button1Click(Sender ...
- Spring之jdbcTemplate:查询的三种方式(单个值、单个对象、对象集合)
JdbcTemplateDemo2.java package helloworld.jdbcTemplate; import org.springframework.jdbc.core.JdbcTem ...
- Hibernate的条件查询的几种方式
1. 第一种,用?占位符,如: //登录(用?占位符) public List<UserPO> LoginUser(UserPO up)throws Exception{ Session ...
随机推荐
- Effective Java 第三版——71. 避免不必要地使用检查异常
Tips 书中的源代码地址:https://github.com/jbloch/effective-java-3e-source-code 注意,书中的有些代码里方法是基于Java 9 API中的,所 ...
- Android中的指纹识别
转载请注明出处:http://blog.csdn.net/wl9739/article/details/52444671 评论中非常多朋友反映,依据我给出的方案,拿不到指纹信息这个问题,在这里统一说明 ...
- Sublime Text 文件路径补全
最有效和好用的是AutoFileName插件,效果如下: 表格编辑 Table Editor相当好用,安装好后参考自述文件(Preferences --> Package Settings -- ...
- 100BASE-TX、100Base-FX等含义
100BASE-TX:双绞线,使用两对非屏蔽双绞线或两对1类屏蔽双绞线连接,传输距离100米 100Base-FX,是在光纤上实现的100 Mbps以太网标准,其中F指示光纤,IEEE标准为802.3 ...
- Attacks for RL
1. http://rll.berkeley.edu/adversarial/ Adversarial Attacks on Neural Network Policies 就是对test时候的p ...
- 大华等其他NVR接入海康IPC H.264方法
有一次遇到这个问题,因为时间急,没有注意,这次一个朋友也遇到这个问题,各种百度,也没有看到答案 只好自己研究了一下,最终发现以下方式来解决 下面办法可以解决海康IPC不能能过ONVIF连接到大华等其他 ...
- springboot-async
在项目中,当访问其他人的接口较慢或者做耗时任务时,不想程序一直卡在耗时任务上,想程序能够并行执行, 我们可以使用多线程来并行的处理任务,也可以使用spring提供的异步处理方式@Async. Spri ...
- spring 测试类test测试方法
实例掩码地址为:孔浩组织结构设计 web.xml配置文件: <!-- Spring 的监听器可以通过这个上下文参数来获取beans.xml的位置 --> <context-param ...
- GoLang之反射
反射 反射(reflect) 所谓反射(reflect)就是能检查程序在运行时的状态. 使用反射的三条定律: 反射可以将“接口类型变量”转换为“反射类型对象”: 反射可以将“反射类型对象”转换为“接口 ...
- 转:十步完全理解SQL
来自:http://blog.jobbole.com/55086/ 很多程序员视 SQL 为洪水猛兽.SQL 是一种为数不多的声明性语言,它的运行方式完全不同于我们所熟知的命令行语言.面向对象的程序语 ...