一. 解决列名和属性名不一致的两个途径
1 定义列别名:
可以通过 列别名的方式将列名和属性保持一致 继续使用自动映射ResultType
2.使用ResultMap
用于自定义映关系,可以自主设置列名和属性名的映射关系,使用resultMap,将不使用自动映射机制
注意:主键用 id 标签 非主键使用result 标签
二 业务装配:
mapper 层只做单表查询操作,在service层进行手动装配,实现业务装配
三 resultMap的N+1实现多对一
在mapper层 中的配置
<association> 用于关联一个对象
property:指定要关联的属性名
select:设定要继续引用的查询,即空间加id namespace+id
column:查询时需要传递的列的数据
四 resultMap的N+1方式实现多表查询一对多
mapper层

<collection>用于关联一个集合
property:指定要关联的属性名
select:设定要继续引用的查询,空间加id
column:查询时需要传递的列的数据
五 Auto—Mapping实现多表查询
主要是利用别名
注意:别名出现特殊符号,是用~~符号引起来,Oracle 可以使用 “ ” 符号
六 注解:注解是用于描述代码的代码
什么时候使用:使用注解一般用于简化配置文件. 但是, 注解有时候也不
是很友好(有时候反而更麻烦), 例如动态 SQL.

注解简单好用 非常明了
注解关联查询

在学生实体类中定义一个对象clazz 作为班级对象
@One的作用是通过查询到的一个字段作为参数
里面的select=后面的是查询方法的地址 通过cid 返回班级信息,
对应column为cid为班级号
Mybatis运行过程涉及的类和接口
1.Resources类 用于加载MyBatis核心配置文件
2 XMLConfigBuilder类:用于解析xml文件(核心配置文件)
3 configuration类:用于存放xml文件解析后的结构
4DefaultSQlSessionFactory类:是SqlSession接口的实现类,创建
时需要使用configuration对象
5 SqlSession接口:是MyBatis操作的核心
6 DefaultSqlSession类:是SqlSession接口的实现类
7 TransactionFactory 接口:用于生产Transaction对象
8 用于操作数据库的事务对象
9 Executor 接口:
是MyBatis的核心执行器,类似于jdbc中的Statement,常用的实现类是SimpleExecutor
网友评论