Hibernate学习之路(十三):Hibernate中的QBC查询和本地sql操作
2018-03-15 22:50
766 查看
什么是hibernate的QBC查询
QBC 查询就是通过使用 Hibernate 提供的 Query By Criteria API 来查询对象,这种 API 封装了 SQL 语句的动态拼装,对查询提供了更加面向对象的功能接口示例代码:
/* * 第一个QBC查询(完全是基于对象的查询操作,更加方便) */ @Test void testQBC() { //1. 创建criteria对象 Criteria criteria = this.session.createCriteria(Employee.class); //2. 添加查询条件:在QBC中查询条件使用criterion来表示,criterion可以通过Restrictions的静态方法获取 criteria.add(Restrictions.eq("email", "23@qq.com")); criteria.add(Restrictions.gt("salary", 100F)); //执行查询(两种方法都可以) // Object result = criteria.uniqueResult(); // System.out.println(result); List<Employee> result = criteria.list(); System.out.println(result.get(0)); }
console:
示例代码2
/* * 通过QBC实现and以及or查询 */ @Test void testQBC2() { Criteria criteria = this.session.createCriteria(Employee.class); //1. AND 查询 Conjunction conjunction = Restrictions.conjunction(); conjunction.add(Restrictions.like("name", "ja", MatchMode.ANYWHERE)); Department dept = new Department(); dept.setId(1); conjunction.add(Restrictions.eq("department", dept)); // System.out.println(conjunction); //2. OR 查询 Disjunction disjunction = Restrictions.disjunction(); disjunction.add(Restrictions.ge("salary", 1000F)); disjunction.add(Restrictions.isNull("email")); criteria.add(disjunction); criteria.add(conjunction); criteria.list(); }
console:
示例代码3
/* * 使用QBC进行统计查询 */ @Test void testQBC3() { Criteria criteria = this.session.createCriteria(Employee.class); // 统计查询:使用Projection 来表示,可以由Projections 的静态方法获取 criteria.setProjection(Projections.max("salary")); System.out.println(criteria.uniqueResult()); }
console:
示例代码4
/* * 使用QBC进行排序和分页查询 */ @Test void testQBC4() { Criteria criteria = this.session.createCriteria(Employee.class); //1. 添加排序 criteria.addOrder(Order.asc("salary")); criteria.addOrder(Order.desc("id")); //2. 添加分页 int pageNo = 1; int pageSize = 2; criteria.setFirstResult((pageNo-1) * pageSize).setMaxResults(pageSize); criteria.list(); }
console:
hibernate对于本地sql语句的支持
示例代码:/* * hql 主要是运用在查询和更新以及删除,其不支持增加 * QBC 主要是运用简单的查询(方便,快捷) * 而 本地sql 可以实现所有的功能 */ @Test void testNativeSql() { String sql = "insert into GG_DEPARTMENT values (?,?)"; NativeQuery query = this.session< a924 /span>.createSQLQuery(sql); query.setInteger(0, 123).setString(1, "开发部").executeUpdate(); }
console:
hql还可以实现很好的数据更新和删除操作
/* * 测试hql的更新和删除 */ @Test void testHQLUpdate() { // String hql = "update Department d set d.name = :name where d.id = :id"; // Query query = this.session.createQuery(hql); // query.setParameter("name", "搞基部").setParameter("id", 123); // query.executeUpdate(); // String hql = "delete from Department d where d.id = :id"; this.session.createQuery(hql).setParameter("id", 123).executeUpdate(); }
console:
后台数据库:
点我获取源代码
相关文章推荐
- Hibernate 检索查询的几种方式(HQL,QBC,本地SQL,集成Spring等)
- [原创]java WEB学习笔记92:Hibernate学习之路-- -QBC 检索和本地 SQL 检索:基本的QBC 查询,带 AND 和 OR 的QBC,统计查询,排序,分页
- Hibernate 检索查询的几种方式(HQL,QBC,本地SQL,集成Spring等)
- Hibernate之QBC查询与本地SQL查询
- Hibernate之QBC查询与本地SQL查询
- 10.3 hibernate_查询方式(QBC查询、本地SQL查询)
- hibernate查询方式【2】:QBC查询,本地sql查询
- Hibernate 检索查询的几种方式(HQL,QBC,本地SQL,集成Spring等)
- Hibernate学习之QBC和本地SQL查询
- Hibernate学习-07:CRUD(增删改查)操作之查询多条/所有记录HQL、QBC、SQL三种方式
- Hibernate学习笔记----QBC和本地SQL查询
- Hibernate 命名查询、本地SQL、自定义SQL
- Hibernate的四种查询方式(主键查询,HQL查询,Criteria查询,本地sql查询)和修改和添加
- hibernate将本地SQL查询结果封装成对象
- QBC & 本地SQL 查询
- Hibernate-主键查询、HQL查询,Criteria以及本地SQL查询
- Hibernate-HQL-QBC 检索-本地SQL 检索
- hibernate将本地SQL查询结果封装成对象
- hibernate本地sql语句和hsql语句和Criteria查询
- Hibernate 本地SQL查询