版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第九章 Criteria查询及注解第十章 MyBatis入门什么是Criteria查询QBC(Query By Criteria) 基本用法基本用法 1.获取一个获取一个Criteria查询对象 Criteria criteria=session.createCriteria(Dept.class); 2.使用使用Restrictions添加查询条件添加查询条件 Criterion criterion=Restrictions.eq(deptno, 10); criteria.add(criterion);3.获取返回结果获取返回结果List depts=criteria.list();for
2、 (Dept dept : depts) System.out.println(dept.getDname();Criteria查询是查询是Hibernate提供的另一种查询方式,比提供的另一种查询方式,比HQL更加面向对象的查询方式。更加面向对象的查询方式。代码可简化为代码可简化为List depts=session.createCriteria(Dept.class).add(Restrictions.eq(deptno, 10).list();Criteria条件查询 Restrictions的方法的方法 eq() 等于 = ne() 不等于 gt() 大于 ge() 大于等于 = lt
3、() 小于 le() 小于等于 = isNull() 是否为空 isNotNull() 不为空 in(属性名,集合或数组) Restrictions.not( Restrictions.in() between(“属性名”,值1,值2) Restrictions.not(Restrictions.between() allEq() 利用Map()来进行多个等于的限制 and(条件1,条件2) 或 conjunction() or 或多个或disjunction() sqlRestriction 用SQL限定查询 通过通过add(Restrictions.条件方法条件方法()来添加条件来添加条件
4、 like(属性名,要匹配的值,字符匹配模式) ilike 忽略大小写 ilike(属性名,要匹配的值,字符匹配模式) 字符匹配模式MatchMode START 以x开头 END 以x结束 ANYWHERE 包含有x的 EXACT 精确匹配 根根据姓名模据姓名模糊查询出员工糊查询出员工List emps = session.createCriteria(Emp.class, e).add(Restrictions.ilike(e.ename, s,MatchMode.ANYWHERE).list();for (Emp emp : emps) System.out.println(emp.ge
5、tEname();Criteria动态查询根据对象的属性值是否存在,添加条件根据对象的属性值是否存在,添加条件 Criteria ct=session.createCriteria(Emp.class);if(con.getJob()!=null)ct.add(Restrictions.eq(job, con.getJob();if(con.getSal()!=null)ct.add(Restrictions.gt(sal, con.getSal();if(con.getBeginDate()!=null&con.getEndDate()!=null)ct.add(Restrictio
6、ns.between(hiredate, con.getBeginDate(), con.getEndDate();List emps=ct.list();for (Emp emp : emps) System.out.println(emp);投影查询 .setProjection(Property.forName(要投影的属性) 相当于select 属性名 from 对象 一般只查询部分列时使用Criteria ct=session.createCriteria(Emp.class);/多个列List list=ct.setProjection(Pjection
7、List().add(Property.forName(ename).add(Property.forName(job).list();for (Object object : list) System.out.println(object0+t+object1);Criteria排序 .addOrder(Order.asc(“属性名”)或Order.desc(“属性名”); Criteria ct=session.createCriteria(Emp.class);List emps=ct.addOrder(Order.asc(job).addOrder(Order.desc(empno).
8、list();for (Emp emp : emps) System.out.println(emp);查询所有员工,员工按查询所有员工,员工按job升序,编号降序显示升序,编号降序显示Criteria分页 设置开始的条数:.setFirstResult() 设置一次查询的记录条数.setMaxResults(); 统计记录数 .rowCount()Criteria ct=session.createCriteria(Emp.class);ct.setProjection(Projections.rowCount();Integer count=(Integer) ct.uniqueResul
9、t();Criteria ct1=session.createCriteria(Emp.class);List emps=ct1.setFirstResult(page-1)*rows).setMaxResults(rows).list();for (Emp emp : emps) System.out.println(emp);Criteria连接查询 内链接 方式一:.createCriteria(要连接的对象) 方式二:createAlias(要连接的对象,别名) 外链接 左外连接:setFetchMode(要连接的对象,FetchMode.JOIN) Criteria ct=sessi
10、on.createCriteria(Emp.class);ct.add(Restrictions.gt(sal, 2000D).createCriteria(dept).add(Restrictions.eq(dname, SALES);List emp=ct.list();for (Emp emp2 : emp) System.out.println(emp2);查询部门名称为查询部门名称为SALES并且工资大于并且工资大于2000的员工信息的员工信息Criteria连接查询/在指定实体类的时候指定一个别名,在查询中可能通过别名来确定属性Criteria ct=session.createC
11、riteria(Emp.class,e).createAlias(e.dept, d).add(Restrictions.gt(e.sal, 2000D).add(Restrictions.eq(d.dname, SALES);List emp=ct.list();for (Emp emp2 : emp) System.out.println(emp2);查询职位是查询职位是“analyser”或或“accountant”或或“engineer”的员工的员工Criteria分组 用DetachedCriteria根据部门分组 查询最大、最小、平均值DetachedCriteria ct=Det
12、achedCriteria.forClass(Emp.class,e).createAlias(e.dept, d).setProjection(PjectionList().add(Projections.avg(e.sal), avgsal).add(Projections.max(e.sal), maxsal).add(Projections.min(e.sal), minsal).add(Projections.groupProperty(d.dname), deptname).setResultTransformer(Transformers.aliasT
13、oBean(DeptEmpSal.class); /设置转换返回的结果,设置转换返回的结果,aliasToBean()把结果通过setter方法注入到指定的对像属性中 List deps=ct.getExecutableCriteria(session).list();/获取可执行的Criteria对象Hibernate注解注解是配置持久化类映射关系的方式之一。添加jar包 hibernate-annotatinos.jar ejb3-persistence.jar 使用注解配置持久化类 建立AnnotationConfiguration会话工厂 在Hibernate主配置文件声明持久化类 使
14、用注解的步骤使用注解的步骤 常用注解 Entity Id GeneratedValue Table UniqueConstraint Lob Colunm Transient OneToOne OneToMany ManyToOne ManyToMany 对象关联关系注解对象关联关系注解 MyBatisMyBatis入门入门n MyBatis是什么? n 使用MyBatis实现持久化操作 n MyBatis配置文件 n 使用MyBatis实现持久化操作的步骤 MyBatis是什么? MyBatis是一款一流的支持自定义SQL、存储过程和高级映射的持久化框架。 MyBatis几乎消除了所有的JD
15、BC代码,也基本不需要手工去设置参数和获取检索结果。MyBatis能够使用简单的XML格式或者注解进行来配置,能够映射基本数据元素、Map接口和POJOs(普通java对象)到数据库中的记录。使用MyBatis实现持久化操作的步骤 准备jar包、添加jar包mybatis-xxx.jar 创建配置主配置文件xml 创建持久化类和数据库接口 创建SQL映射文件 (可略)创建接口实现类(可略是因为能通过SqlSession的getMapper返回接口实例) 具体测试和操作 主配置文件主配置文件SQL映射文件 描述如何从结果集中加载对象 一个可以被其他语句复用的SQL 块 SELECT * FROM t_personsql标签的用法使用MyBatis实现持久化操作 String resource = mybaits-config.xml;Reader reader = Resources.getResourceAsReader(resource);SqlSessionFactory sf = new SqlSessionFactoryB
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025广东惠州市博罗县产业投资集团有限公司下属子公司招聘5人备考题库附答案
- 2025年11月重庆市万州区孙家镇人民政府招聘非全日制公益性岗位2人(公共基础知识)综合能力测试题附答案
- 2025年河南通航机场管理有限公司社会招聘23人模拟试卷附答案
- 2025广东湛江市公安局麻章分局招聘警务辅助人员12人(第三次)参考题库附答案
- 2025安徽合肥市直机关遴选公务员100人备考题库附答案
- 2026宝鸡太白县总工会招聘社会化工作者(2人)笔试备考试题及答案解析
- 2026福建泉州市石狮市鸿山镇人民政府招聘编外人员4人笔试备考试题及答案解析
- 2026北京市育英学校科学城学校招聘笔试模拟试题及答案解析
- 2025秋人教版道德与法治八年级上册4.2遵守规则同步练习
- 2026湖北省面向北京化工大学普通选调生招录笔试模拟试题及答案解析
- 盖州市水务有限责任公司2025年工作总结暨2026年工作计划
- 幼儿园老师面试高分技巧
- 瓷砖工程验收课程
- 难治性癌痛护理
- 2026年管线钢市场调研报告
- 中医内科学考试题库及答案(二)
- 2025年江苏省公务员面试模拟题及答案
- 2025中国家庭品牌消费趋势报告-OTC药品篇-
- 广东省2025届湛江市高三下学期第一次模拟考试-政治试题(含答案)
- 天津市河东区2026届七年级数学第一学期期末复习检测试题含解析
- 水库清淤申请书
评论
0/150
提交评论