mybatis第二章(朱磊)孔剖析

上传人:今*** 文档编号:105885957 上传时间:2019-10-13 格式:DOC 页数:33 大小:280.96KB
返回 下载 相关 举报
mybatis第二章(朱磊)孔剖析_第1页
第1页 / 共33页
mybatis第二章(朱磊)孔剖析_第2页
第2页 / 共33页
mybatis第二章(朱磊)孔剖析_第3页
第3页 / 共33页
mybatis第二章(朱磊)孔剖析_第4页
第4页 / 共33页
mybatis第二章(朱磊)孔剖析_第5页
第5页 / 共33页
点击查看更多>>
资源描述

《mybatis第二章(朱磊)孔剖析》由会员分享,可在线阅读,更多相关《mybatis第二章(朱磊)孔剖析(33页珍藏版)》请在金锄头文库上搜索。

1、 Touteng 安博A+精英软件人才培养工程系列教材基于mybatis开发持久层应用(第三阶段)版本历史版本完成日期修改人说明目录第2章 MyBatis 进阶2核心技能部分52.1 MyBatis 级联查询52.1.1 什么是关联关系52.1.2 关联62.1.3 动态SQL13本章总结18任务实训部分181:继续完善学生管理系统,对学生进行条件查询182:对表Classes进行删除操作203:对表Classes进行更新操作21巩固练习222.2 Mybatis 缓存232.3 Mybatis 映射器注解26第2章 MyBatis 进阶学习内容 MyBatis 高级级联查询 MyBatis

2、集合映射、关联优化 MyBatis 动态SQL语句、存储过程能力目标 掌握 MyBatis 高级级联查询 掌握 MyBatis 集合映射 掌握 MyBatis 动态SQL语句 了解Mybatis 存储过程本章简介第1章 主要讲解了Mybatis总体架构、运行原理,并且使用mybatis实现了对数据库的CRUD操作。在面向对象设计中,数据库表之间的关系一般被设计为实体对象之间的关系,实体对象之间关系一般包括:多对一,一对多,一对一,多对多。Mybatis在3.X之后引进了以注解形式实现简单的映射语句。本章主要针对对象的关联关系、关联映射配置实现映射进行讲解。核心技能部分2.1 MyBatis 级

3、联查询2.1.1 什么是关联关系关联体现的是两个类之间语义级别的一种强依赖关系。比如我和我的朋友,这种关系比依赖更强、不存在依赖关系的偶然性、关系也不是临时性的,一般是长期性的,而且双方的关系一般是平等的。关联可以是单向、双向的。表现在代码层面,为被关联类B以类的属性形式出现在关联类A中,也可能是关联类A引用了一个类型为被关联类B的全局变量。在UML类图设计中,关联关系用由关联类A指向被关联类B的带箭头实线表示,在关联的两端可以标注关联双方的角色和多重性标记在mybatis中,实体类中的关联关系直接映射sql语句。例如我们使用部门、员工表做下面映射关系。2.1.2 关联2.1.2.1 多对一关

4、联查询在mybatisConfig.xml中添加对DeptMapper.xml的引用,看代码斜体加粗部分: 增加映射文件(EmpMapper.xml)与映射接口(EmpMapper.java),以及实体类(Emp.java)EmpMapper.xml的映射文件selecte.empno,e.ename,e.job,e.mgr,e.hiredate,e.sal,m,e.deptno,d.dname,d.locfrom emp e left join dept d on e.deptno=d.deptnoEmpMapper.java接口public interface EmpMapper publ

5、ic List selectManytoOne();Emp.java实体类public class Emp private Integer empno;private String ename;private String job;private Integer mgr;private Date hiredate;private Integer sal;private Integer comm;private Dept dept; /省略getter和setter大家注意看映射文件中的这部门代码关联元素处理“有一个类型的关系。比如,示例中,一个员工(Emp)有一个部门(Dept)。关联映射就工

6、作于这种结果之上。指定了目标属性,来获取值的列,属性的java类型(很多情况下MyBatis可以自己算出来),如果需要的话还有jdbc类型,如果想覆盖或获取的结果值还需要类型控制器。 关联中不同的是需要告诉MyBatis如何加载关联。MyBatis在这方面会有两种不同的方式:1. 嵌套查询:通过执行另外一个SQL映射语句来返回预期的复杂类型。 2. 嵌套结果:使用嵌套结果映射来处理重复的联合结果的子集。 首先,来查看这个元素的属性。所有的都会看到,它和普通的只由select和resultMap属性的结果映射不同。 属性 描述 property 映射到列结果的字段或属性。如果匹配的是存在的,和给

7、定名称相同的JavaBeans的属性,那么就会使用。否则MyBatis将会寻找给定名称的字段。这两种情形可以使用通常点式的复杂属性导航。比如,可以这样映射一些东西:“username,或者映射到一些复杂的东西:“address.street.number。 column 来自数据库的类列名,或重命名的列标签。这和通常传递给resultSet.getString(columnName)方法的字符串是相同的。 注意:要处理复合主键,可以指定多个列名通过column=prop1=col1,prop2=col2这种语法来传递给嵌套查询语句。这会引起prop1和prop2以参数对象形式来设置给目标嵌套查

8、询语句。 javaType 一个Java类的完全限定名,或一个类型别名(参加上面内建类型别名的列表)。如果映射到一个JavaBean,MyBatis通常可以断定类型。然而,如映射到的是HashMap,那么应该明确地指定javaType来保证所需的行为。 jdbcType 在这个表格之前的所支持的JDBC类型列表中的类型。JDBC类型是仅仅需要对插入,更新和删除操作可能为空的列进行处理。这是JDBC的需要,而不是MyBatis的。如果直接使用JDBC编程,需要指定这个类型-但仅仅对可能为空的值。 typeHandler 类型处理器。使用这个属性,可以覆盖默认的类型处理器。这个属性值是类的完全限定名或者是一个类型处理器的实现,或者是类型别名。 以上代码执行结果:public static void main(String args) throws IOException SqlSession session = SqlSessionFactoryUtil.getSqlSession(); EmpMapper empmapper = session.getMapper(EmpMapper.class); List empList = empmapper.selectManytoOne(); for (Emp emp : empList) System

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号