• 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() 就有值了,此为延迟加载的基本原理。

  • 相关阅读:
    工业光网助力工业企业数字化转型发展
    spring boot+ vue位置信息大数据综合管理平台源码
    Keras深度学习实战(32)——基于LSTM预测股价
    基于Bézier曲线的三维造型与渲染
    PS与PL与PG082
    Azure Devops上模版化K8s部署
    【网络篇】第七篇——网络套接字编程(三)(TCP详解)
    1250名微软员工自曝工资待遇,以求薪酬公平
    架构重构技巧
    使用Vue脚手架
  • 原文地址:https://blog.csdn.net/qq_50392643/article/details/126931003