2019-06-04

一. 解决列名和属性名不一致的两个途径

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容