Hibernate中的核心接口query接口用法
来源:互联网 发布:excel怎样删除重复数据 编辑:程序博客网 时间:2024/04/28 16:02
Query是Hibernate的查询接口,用于从数据存储源查询对象及控制执行查询的过程,Query包装了一个HQL查询语句。
Query接口的用法:
通过SessionFactory获得了session对象后,除了可以通过get(类名.class, id)方法得到相应的对象,还可以通过获得Query对象来取得需要的对象
<span style="font-size:24px;">Query query = session.createQuery("查询语句如from UserBean");</span>
Query对象在Session对象关闭之前有效,否则会抛出SessionException异常。因为Session对象就想JDBC中的Connection 对象,即数据库的一次连接。关闭Connection对象,Statement对象就不能再使用,所以关闭Session后就不能再使用Query对象了。
Query接口的方法:
Query接口的常用方法:
1,setxxx():用于设置HQL语句中问号或者变量的值;
设置HQL语句中问号或者变量的值有两种使用方式:
A,setString(int position,String value);设置HQL中的“?”的值,其中position代表“?”在HQL中的位置,value是要为“?”设置的值
例:
Query query=session.createQuery("from UserInfoPO u where u.age>? and u.useName like ?"); query.setInteger(0, 22); //使用"?",第一个下标是从0开始的,给第一个问号赋值22 query.setString(1, "%志%"); //设置第二个问号的值为“%志%”
例:
Query query=session.createQuery("from UserInfoPO u where u.age>:minAge and u.useName like:useName"); query.setInteger("minAge", 22); //设置minAge的值 query.setString("userName", "%志%"); //设置useName的值
2,list();返回查询结果,并把查询结果转换成list对象;
也可以用query.uniqueResult();//得到一个单个的对象
Query query=session.createQuery("from UserInfoPO u where u.age>:minAge and u.useName like:useName"); query.setInteger("minAge", 22); //设置minAge的值 query.setString("userName", "%志%"); //设置useName的值 List<UserInfoPO> list=query.list(); for(int i=0;i<list.size();i++){ ui=(UserInfoPO)list.get(i); System.out.println(ui.getUserName()); }
3,executeUpdate();执行更新和删除语句
Query query=session.createQuery("delete from UserInfoPO"); query.executeUpdate(); //删除数据
分页查询:
query.setFirstResult(位置如0);//表示从哪个位置开始查询,返回query对象
query.setMaxResult(记录条数);//表示当页共几条记录,返回一个集合
session.createQuery("select count(*) from 类名").uniqueResult();//得到记录总数
介绍一些有关Query的查询语句
使用HQL删除数据:
String hql = "delete user where age>18"; Query query = session.createQuery(hql); int ref = query.executeUpdate();更新数据 :
Transaction tx= session.beginTransaction(); Query query = session.createQuery("update User set name='momor' where name='bbb'"); query.executeUpdate(); tx.commit(); session.close();也可以在where子句上进行表达式,and、or:
Query query = session.createQuery("from User user where (user.age / 10 = 3)");
Query query = session.createQuery("from User user where (user.age > 20) and (user.name = 'caterpillar')");is not nullL与is null则可以测试字段值是否为空值:
Query query = session.createQuery("from User user where user.name is not null");between可以测试字段值是否在指定的范围之内:
Query query = session.createQuery("from User user where user.age between 20 and 30");
可以使用in或not in来测试字段值是否在您指定的集合中:
Query query = session.createQuery("from User user where user.name in('caterpillar', 'momor')");like或not like可以让您进行模糊条件搜寻,例如想搜寻名称中含有cater开头的数据:
Query query = session.createQuery("from User user where user.name like 'cater%'");对查询结果使用order by进行排序,可使用desc反排序:
Query query = session.createQuery("from User user order by user.age");
Query query = session.createQuery("from User user order by user.age desc, user.name");
代码应用:
public static void query(String name) { Session session = null; try { session = HibernateSessionFactory.getSession(); //定义hql语句,目的是:通过name查询所有 String queryString = "from User as user where user.name=:n"; Query query = session.createQuery(queryString); query.setString("n", name); //查询出所有的name相同的 List<User> list = query.list();// 得到所有的结果集 for (User u : list) { System.out.println(u.toString()); } } finally { if (session != null) { session.close(); } } }
0 0
- Hibernate中的核心接口query接口用法
- Hibernate中的核心接口query接口用法
- hibernate中核心接口Query的用法简介
- hibernate中的核心接口及用法
- Hibernate的核心接口 --- Query查询详解
- Hibernate的核心接口 --- Query查询详解
- Hibernate核心类/接口用法
- Hibernate中的几个核心接口
- hibernate中的五个核心接口
- Hibernate的Query接口
- Hibernate中query接口
- hibernate中的五大核心接口
- Hibernate核心接口简介
- hibernate核心接口
- Hibernate核心接口 (4.1)
- Hibernate的核心接口
- Hibernate核心接口
- hibernate核心接口
- 【Codeforces Round 324 (Div 2)C】【构造 讨论】Marina and Vasya 构造c串使得c串与a串b串各有m个字符不同
- Spring之—— AspectJ AOP 完整示例
- 剑指Offer-11-数值的整数次方
- Opencv学习手册(二)--- 图像采集与显示
- 编程之美-判断两个链表是否相交方法整理
- Hibernate中的核心接口query接口用法
- 黄山自驾游攻略——不仅仅是攻略哦
- Blog1
- 黑马程序员----java基础第13天(字符串的操作,StringBuffer与StringBuilder)
- 【Codeforces Round 324 (Div 2)D】【miller-rabin素数检验 猜想】Dima and Lisa 奇数拆分成三素数
- 常见的设计模式(二)——简单工厂模式
- POI导出JavaWeb中的table到excel下载 (很通用)
- Android各种分辨率
- char*转wchar_t