条件查询

  1. 第一种,用?占位符,如:
  2. //登录(用?占位符)
  3. public List<UserPO> LoginUser(UserPO up)throws Exception{
  4. Session session = HibernateSessionFactory.getSession();
  5. String hql = "from UserPO where name = ? and pwd= ?";
  6. Query query = session.createQuery(hql);
  7. query.setString(, up.getName());
  8. query.setString(, up.getPwd());
  9. List<UserPO> list = query.list();
  10. session.close();
  11. return list;
  12. }
  13.  
  14. 、用“:+命名”占位符,如:
  15. //登录(用":命名"占位符)
  16. public List<UserPO> LoginUser2(UserPO up)throws Exception{
  17. Session session = HibernateSessionFactory.getSession();
  18. String hql = "from UserPO where name = :n and pwd= :p";
  19. Query query = session.createQuery(hql);
  20. query.setString("n", up.getName());
  21. query.setString("p", up.getPwd());
  22. List<UserPO> list = query.list();
  23. session.close();
  24. return list;
  25. }
  26.  
  27. 2.1、使用这种占位符还可以这样设值,如:
  28.  
  29. //登录(用":命名"占位符,用setParameter设值)
  30. public List<UserPO> LoginUser3(UserPO up)throws Exception{
  31. Session session = HibernateSessionFactory.getSession();
  32. String hql = "from UserPO where name = :n and pwd= :p";
  33. Query query = session.createQuery(hql);
  34. query.setParameter("n", up.getName());
  35. query.setParameter("p",up.getPwd());
  36. List<UserPO> list = query.list();
  37. session.close();
  38. return list;
  39. }
  40. 使用这种方式不需要写明映射的类型,Hibernate会通过配置自动给我们转,但是由于Hibernate有两种日期格式:DateTIMESTAMP,所以对于日期类型必须写明映射的类型。写法:
  41.  
  42. 、按照对象进行参数绑定,如:
  43.  
  44. //登录(用":命名"占位符,用setProperties设值,命名参数必须要与被绑定的属性名相同)
  45. public List<UserPO> LoginUser4(UserPO up)throws Exception{
  46. Session session = HibernateSessionFactory.getSession();
  47. String hql = "from UserPO where name = :name and pwd= :pwd";
  48. Query query = session.createQuery(hql);
  49. query.setProperties(up);
  50. List<UserPO> list = query.list();
  51. session.close();
  52. return list;
  53. }
  54. 、使用条件查询(Criteria),如:
  55.  
  56. //登录(用条件查询 Criteria)完全脱离sql语句和hql语句
  57. public List<UserPO> LoginUser5(UserPO up)throws Exception{
  58. Session session = HibernateSessionFactory.getSession();
  59. Criteria cri = session.createCriteria(UserPO.class);
  60. cri.add(Restrictions.eq("name", up.getName()));
  61. cri.add(Restrictions.eq("pwd", up.getPwd()));
  62. List<UserPO> list = cri.list();
  63. session.close();
  64. return list;
  65. }
  66.  
  67. 、离线条件查询,如:
  68. //登录(用离线条件查询 DetachedCriteria)
  69. public List<UserPO> LoginUser6(UserPO up)throws Exception{
  70. Session session = HibernateSessionFactory.getSession();
  71. DetachedCriteria dc = DetachedCriteria.forClass(UserPO.class);
  72. dc.add(Restrictions.eq("name", up.getName()));
  73. dc.add(Restrictions.eq("pwd", up.getPwd()));
  74. Criteria cri = dc.getExecutableCriteria(session);
  75. List<UserPO> list = cri.list();
  76. session.close();
  77. return list;
  78. }
  79. 使用离线可以将其写在业务层,以参数的形式传入,以减少DAO的代码。
  80. 、分页查询:分页查询是数据库应用中的处理方式,querycriteria接口都提供了用于分页查询的方法:
  81. ) setFirstResult(int):指定从哪一个对象开始查询,参数是索引位置,从0开始。
  82. ) setMaxResult(int):指定一次最多查询的对象数量。

查询所有记录:

  1. /**
  2. * 查询所有的记录
  3. */
  4. public static List selectAll() {
  5. List list = null;
  6. try {
  7. session = HibernateSessionFactory.getSession();
  8. Transaction tran = session.beginTransaction();
  9. Query q = session.createQuery("from User1");
  10. list = q.list();
  11. tran.commit();
  12. } catch (Exception e) {
  13. e.printStackTrace();
  14. } finally {
  15. HibernateSessionFactory.closeSession();
  16. }
  17. return list;
  18. }

Hibernate的条件查询的几种方式+查询所有的记录的更多相关文章

  1. MyBatis实现模糊查询的几种方式

    在学习MyBatis过程中想实现模糊查询,可惜失败了.后来上百度上查了一下,算是解决了.记录一下MyBatis实现模糊查询的几种方式. 数据库表名为test_student,初始化了几条记录,如图: ...

  2. Hibernate 检索查询的几种方式(HQL,QBC,本地SQL,集成Spring等)

    1.非集成Spring hibernate的检索方式,主要有以下五种. 1.导航对象图检索方式.(根据已经加载的对象,导航到其他对象.) 2.OID检索方式.(按照对象的OID来检索对象.) 3.HQ ...

  3. hibernate载入持久化对象的两种方式——get、load

    一.get与load对照 在hibernate中get和load方法是依据id取得持久化对象的两种方法.但在实际使用的过程中总会把两者混淆,不知道什么情况下使用get好,什么时候使用load方法效率更 ...

  4. Android之——ContentResolver查询的三种方式

    转载请注明出处:http://blog.csdn.net/l1028386804/article/details/47785491 今天做到一个小项目.查询手机中短信的信息,当然得去系统暴露出来的数据 ...

  5. SpringBoot集成Mybatis实现多表查询的两种方式(基于xml)

     下面将在用户和账户进行一对一查询的基础上进行介绍SpringBoot集成Mybatis实现多表查询的基于xml的两种方式.   首先我们先创建两个数据库表,分别是user用户表和account账户表 ...

  6. 五 Mybatis一对一关联查询的两种方式(基于resultType&基于resultMap)

    关联查询: 一个用户对应多个订单,一个订单只有一个用户 订单关联用户:两种方式 一:基于resultTYpe,一个与表关系一样的pojo实现 主表订单,从表用户 首先要有一个与关联查询表关系一样的po ...

  7. mORMot学习笔记2-2种方式查询数据

    本例使用SqlServer 第一种方式结果放入Memo控件,,需要引用SynCommons, SynDB, SynOleDb; procedure TForm1.Button1Click(Sender ...

  8. Spring之jdbcTemplate:查询的三种方式(单个值、单个对象、对象集合)

    JdbcTemplateDemo2.java package helloworld.jdbcTemplate; import org.springframework.jdbc.core.JdbcTem ...

  9. Hibernate的条件查询的几种方式

    1. 第一种,用?占位符,如: //登录(用?占位符) public List<UserPO> LoginUser(UserPO up)throws Exception{ Session ...

随机推荐

  1. Effective Java 第三版——71. 避免不必要地使用检查异常

    Tips 书中的源代码地址:https://github.com/jbloch/effective-java-3e-source-code 注意,书中的有些代码里方法是基于Java 9 API中的,所 ...

  2. Android中的指纹识别

    转载请注明出处:http://blog.csdn.net/wl9739/article/details/52444671 评论中非常多朋友反映,依据我给出的方案,拿不到指纹信息这个问题,在这里统一说明 ...

  3. Sublime Text 文件路径补全

    最有效和好用的是AutoFileName插件,效果如下: 表格编辑 Table Editor相当好用,安装好后参考自述文件(Preferences --> Package Settings -- ...

  4. 100BASE-TX、100Base-FX等含义

    100BASE-TX:双绞线,使用两对非屏蔽双绞线或两对1类屏蔽双绞线连接,传输距离100米 100Base-FX,是在光纤上实现的100 Mbps以太网标准,其中F指示光纤,IEEE标准为802.3 ...

  5. Attacks for RL

    1. http://rll.berkeley.edu/adversarial/   Adversarial Attacks on Neural Network Policies 就是对test时候的p ...

  6. 大华等其他NVR接入海康IPC H.264方法

    有一次遇到这个问题,因为时间急,没有注意,这次一个朋友也遇到这个问题,各种百度,也没有看到答案 只好自己研究了一下,最终发现以下方式来解决 下面办法可以解决海康IPC不能能过ONVIF连接到大华等其他 ...

  7. springboot-async

    在项目中,当访问其他人的接口较慢或者做耗时任务时,不想程序一直卡在耗时任务上,想程序能够并行执行, 我们可以使用多线程来并行的处理任务,也可以使用spring提供的异步处理方式@Async. Spri ...

  8. spring 测试类test测试方法

    实例掩码地址为:孔浩组织结构设计 web.xml配置文件: <!-- Spring 的监听器可以通过这个上下文参数来获取beans.xml的位置 --> <context-param ...

  9. GoLang之反射

    反射 反射(reflect) 所谓反射(reflect)就是能检查程序在运行时的状态. 使用反射的三条定律: 反射可以将“接口类型变量”转换为“反射类型对象”: 反射可以将“反射类型对象”转换为“接口 ...

  10. 转:十步完全理解SQL

    来自:http://blog.jobbole.com/55086/ 很多程序员视 SQL 为洪水猛兽.SQL 是一种为数不多的声明性语言,它的运行方式完全不同于我们所熟知的命令行语言.面向对象的程序语 ...