2022-09-19 第五组 张明敏 学习笔记

目录

MyBatis:

1.resulType:结果集的自动映射,必须写,对象属性明和查询结果的列名必须对上

2.parameterType:参数类型,可以自动解析,可以写不写,如果是我们自定义的引用数据类型,建议写上全类名

3.设计思路***

4.测试类

5.Param

6.原理

7.@Param

8.结论

9.集合

10.主配置文件config.xml

11.环境environment

12.settings

13.多表查询

14.一级缓存

15.二级缓存

16.延迟加载


MyBatis:

1.resulType:结果集的自动映射,必须写,对象属性明和查询结果的列名必须对上

2.parameterType:参数类型,可以自动解析,可以写不写,如果是我们自定义的引用数据类型,建议写上全类名

3.设计思路***

 尽量不要这么写(username,password)

4.测试类

(1)测试类的类名,以目标类开头,以Test结尾

(2)测试类中的测试方法,尽量以目标方法的方法名结尾,test目标方法名。

5.Param

(1)多个参数

param从1开始

arg从0开始

(2)单个参数

也可以用 param1

(3)param后面数的顺序

传入对象

报错

【1】如果传入的是对象,在mapper.xml映射文件中,必须和对象的属性名匹配

【2】如果传入的是java内置的数据类型的参数,string, Integer..,如果只传一个参数,直接使用#{参数名} ,#{parom1}, #{xxx}

【3】如果传入的是java内置的数据类型的参数,string, Integer ..,如果传入多个参数,必须使用#{ paramN} . #{(arg0},不能用#{参数名}

6.原理

Mybatis在封装参数的时候,封装成了一个Map集合,

(1)如果传入的是user对象,value: {"username" : "admin" , " password": "123456" , "id" :"1"

(2)l如果传入的是一个内置类型的参数,字面量【"xxxx " : "admin" 】

(3)如果从传入的是多个参数,【"param1 " : "admin" 】 , 【"param2" : "123456"】如果传入的是集合,【 "parami” :“{1,2,3,4,5}”】

需要掌握: mybatis传入参数的策略,封装成了一个map集合

7.@Param

可以使用注解@param来给参数命名

8.结论

(1)如果需要传入多个参数,我们希望在mapper .xmlL中和传入对象一样使用参数的名直接赋值,#(username},使用CParam注解起名

(2)我们还是希望通过传入对象来解决问题!! ! !

9.集合

10.主配置文件config.xml

给类起别名(也就是给实体类起别名):

(1):

 (2): 

正常:

 别名:

场景:

实体类里加注解:@Alias()

注意事项:必须放在环境上面

11.环境environment

(1)新建一个实体类:

(2)实现接口,重写方法:

 

properties:读取参数

改成德鲁伊的数据源:

 

创建外部资源文件:

 

(3)才可以在环境里写全类名:

12.settings

(1)下划线转小驼峰

(2)日志实现

 

(3)第三方提供的日志框架

log4J:

 

 

日志为数据分析做准备,后期运营维护

13.多表查询

(1)使用SQL99语法

a.什么情况下使用左连接还是右连接?

答:无论主表中的数据是否和从表有关联关系,主表中的数据都需要显示出来

b.什么情况用内连接inner join?

答:如果两张表中的数据都是有关联的,推荐使用inner join,效率高于left join

c.规范:

* 规范:
* 如果我要的数据,只要有关联的数据,必须用inner join
* 如果我要的数据,某一张表的数据无论和另外一张表是否有关联,都需要展示,必须有left join
*
* 如果两张表中的数据都是有关联的,推荐使用inner join,效率高于left join

(2)多表查询结果集(一对一)

注意:提示不准确

(3)分布查询(另一种多表查询)

前提条件:在对应的对象的Mapper接口中,恰好有要查询的数据;

dept的封装策略:列名和属性名相同

优点:代码复用

缺点:两次数据库连接,两次单表查询;

(4)一对多:一个部门下多个员工

分布:

14.一级缓存

15.二级缓存

16.延迟加载

是调用时触发加载,而非初始化时就加载信息。

举例:调用 a. getB(). getName(),发现 a. getB() 的值为 null,此时会单独触发事件,先保存好的关联 B 对象的 SQL,查询出来 B,然后再调用 a. setB(b),于是再调用 a. getB(). getName() 就有值了,此为延迟加载的基本原理。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值