MyBati s 动态代理和映射器

一、映 射 器 简 介

1、mapper动态代理

在接口中有方法的返回值定义,参数的定义,方法名,在sqlMapper.xml 中也对应这接口给予了赋值, 这时候dao的实现类就显得多余,这是Mybatis可以帮助我们自动产生实现类,并可以调取方法得到结 果,这就是Mybatis的mapper动态代理

2、动态代理的规范

Mapper接口开发方法只需要程序员编写Mapper接口(相当于Dao接口),由Mybatis框架根据接口定义创建接 口的动态代理对象,代理对象的方法体同上边Dao接口实现类方法。

Mapper接口开发需要遵循以下规范:

接口中的返回值 要和 sqlMapper 中的resultType 一致
接口中的入参 要和 sqlMapper 中的parameterType 一致
接口的方法名 要和 sqlMapper 中的id 一致(dao层不允许方法的重载)
sqlMapper 中的namespace 指向 接口的类路径
接口要和sqlMapper 同包
接口要和sqlMapper 同名

 3、如何使用动态代理

使用SqlSession的方法getMapper() 让Mybatis自动生成对应接口的实现对象。

◆ selectOne和selectList

动态代理对象调用sqlSession.selectOne()和sqlSession.selectList()是根据mapper接口方法的返回值决定,如果返回list则调用 selectList方法,如果返回单个对象则调用selectOne方法。

◆ namespace mybatis

官方推荐使用mapper代理方法开发mapper接口,程序员不用编写mapper接口实现类,使用mapper代理方法时,输入 参数可以使用pojo包装对象或map对象,保证dao的通用性。

4、 为什么学习映射器

半自动化的体现        配置 SQL 语句,体现了半自动化 和灵活性。

ORM的体现        对象关系映射的实现,数据库表 和 POJO 类的映射关系。

5、映射器与接口

映射器配置文件和接口绑定:配置文件名对应接口名,id 属性值对应方法名。

6、映射器的引入

7、映射器的组成

二、s e l e c t 元 素

1、select 元素结构

2、输出简单类型

3、参数传递

XML 文件中:

配置文件中利用 parameterType 属性设置参数类型,利用 #{}设置参数的使用及位置。

接口中

接口中,按照方法的入参方式指定参数类型和参数名称。

4、输出pojo对象,简单参数,pojo参数

5、多个参数传递

6、 多值作为参数

三、i n s e r t 元 素

1、insert 元素结构

2、主键回填

3、自定义主键生成规则

四、u p d a t e 元 素 和 d e l e t e 元 素

1、update 元素

2、delete 元素

五、r e s u l t M a p 元 素

1、为什么要使用 resultMap 元素

2、为什么要使用 resultMap 元素

定义映射规则 ORM 的特性,POJO 类和数据 库的映射关系;

级联操作 多表存在主外键关系时,主表和 从表之间的关联操作;

类型转换 数据库字段的类型和 POJO 类 属性的类型转换。

3、r e s ult M a p 元 素 的 结 构

< c o n s t r u c t o r > 用 于 配 置 构 造 方 法 的 元 素 。

< i d >     标 识 主 键 列 , 允 许 多 个 主 键 。

< r e s u l t >     P O J O 到 S Q L 列 名 的 映 射 关 系 。

4、使用 POJO 存储结果集

5、如果没有做映射处理

处理之后

六、多 表 联 查

1、什么是级联

级联(cascade),是指多个对象之间的映射关系,建立数据之间的级联关系提高管理效率

一对一  一个对象对应唯一的对象, 举例:中国公民和身份证;

一对多  一个对象对应多个对象, 举例:班级和学生;

多对多  多个对象对应多个对象, 举例:公司角色和公司员工

2、一对一级联步骤

验证 编写测试类验证级联关系;

级联映射 利用 元素完 成一对一级联;

创建映射器 创建对应的映射器;

创建关联POJO 一对一级联时,以对象方式存 储关联关系;

3、一对一级联映射

4、一对多级联步骤

5、一对多级联

6、级 联 的 缺 陷

性 能 缺 陷  级 联 操 作 会 降 低 性 能 , 增 加 程 序 的 执 行 时 间 ;

复 杂 度 缺 陷  关 联 较 多 造 成 复 杂 度 的 增 加 , 不 利 于 他 人 的 理 解 和 维 护 ;

使用建议

1、根据实际情况增加级联关系;
2、多层关联式,建议超过三层关联时尽量少用级联:


 

  • 19
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值