mybatis2-动态代理

一、概念

java中很重要的原理,底层在SpringAOP深入研究

image-20200911095615878

MyBatis中的Mapper动态代理:不需要写Dao接口的实现类,框架底层使用动态代理可以自动生成Dao接口的实现类,但写的时候必须遵守一定规范

二、实现步骤

2.1 删除Dao实现类,映射文件放在Dao包中

2.2 namespace必须使用接口的全限定名image-20200911095135485

2.3 id必须是方法名image-20200911095216132

2.4 测试类(看成在业务层使用)

image-20200911095950328

image-20200911095855728

2.5改日志文件配置

1.配置到具体文件

2.配置到包

image-20200911100121046

2.6 自动扫包(不用一个一个添加映射)

名字一样就是默认大小写一样

image-20200911100510019

image-20200911100444969

三、查询

3.0 多参数

3.0.1注解

1.给对象起个别名(一个参数可以不用注解)

image-20200911105339064

别名.调用

image-20200911105405926

2.多个参数

给参数起个别名

image-20200911111102972

根据别名接收参数,否则不识别

image-20200911111216882

有普通参数有对象参数,自己用自己的

image-20200911111356352

image-20200911111517606

3.0.2模糊查询(要把#断开

image-20200911110121258

或者concat拼接

image-20200911110347297

3.1 动态SQL

3.1.1 动态添加条件语句

类似于jstl的c标签,解决如下分页问题(组合查询条件sql)

image-20200911112124141

改进如下(条件里直接写属性,sql语句中要用#{}

image-20200911112241952

再改进(省略where 1=1,外面套一个where标签

image-20200911112741256

3.1.2 条件语句多选一(只执行一个

都不满足,什么都不执行

image-20200911113254691

3.1.3 传数组参数和解析

  1. 系统内建好的别名
image-20200911113820505

​ array Array

image-20200911113919825
  1. where id in (1,3,9)

image-20200911114359148

3.1.4 传集合参数和解析

基本类型参数集合image-20200911114903450

image-20200911114742229

对象集合(一般不这么用)image-20200911114839065

image-20200911114827617

3.1.5 条件语句复用

任何一部分拿出来

image-20200911115741332

3.3 分页查询

  1. mybatis无法直接查询pagebean,只能查询List

  2. 分页要pageBean,去service层去装配,在test层模拟

  3. 查询总条数和数据是两个独立的方法

  4. 条件语句复用(查多少条和查这些条数据对象)

    一个参数的也起了一样的别名,为了可以复用语句

    image-20200911155110473

image-20200911155440382

复用的代码提出来做成片段(自己把resultType加上)

3.3.1查数量

image-20200911155513325

3.3.2 查这些条对象

无法在语句里进行page的计算,在service里算好传过来

image-20200911155840688

3.3.2 实例

image-20200911160720095

3.4 多表查询

3.4.1一对多

一对多的集合属性又叫域属性

image-20200912100953001

3.4.1.1直接使用连接查询(使用resultMap转换标签)

1.查一个

image-20200911164241678

2.查全部

和查一个的转换器是一样的

image-20200911164603608

3.4.1.2 分步查询(子查询)

1.查一个(第一个查的结果里一定要有did,才能传给下面的二次查询,没有did不报错,但只能进行到第一步)

一次查询查不完就不能用resultType

image-20200911165956494

2.查全部

3.4.2 多对一(也就是一对一)

1.全连接

image-20200912121500079

2.子查询

image-20200912121524776

3.4.3 一对一(三张表)

1.全连接

image-20200912121251883

2.子查询

image-20200912121351328

3.4.4 多对多

1.全连接查询

根据学生编号查对应的所有课程

image-20200912120955278

2.子查询

根据学生编号查对应的所有课程,需要成绩中间表来连接

image-20200912120504074

如果还想把成绩也展示出来,再嵌套一个resultMap即可

3.5 需要注意问题

xml里大于可以识别

image-20200911153756362

小于会被当做标签嵌套无法识别,要用转义字符

image-20200911153905083

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值