zoukankan      html  css  js  c++  java
  • Mybatis学习-GetMybatisInMyHead

    认知

    ​ MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
    最近在鹅厂实习,也是在工作需要什么就去学习什么,本篇博客是实习过程中学习Mybatis的一点总结和记录,目的是为了方便自己以后使用Mybatis。

    操作基本流程

    1、配置mybatis-config.xml文件

    ​ 该文件是Mybatis的必备文件,当然也可以采取代码中set的方式,但是不推荐。

    配置优化

    ​ 这些配置都可以在中文文档中找到,这里主要是记录下使用到的配置

    • 别名优化,避免使用全类名
    • 属性优化,自动驼峰转换、日志工厂等等
    • 单独配置数据库连接配置文件..........

    2、编写工具类,获取SqlSession

    ​ 过程:SqlSessionFactoryBuilder -> SqlSessionFactory -> SqlSession
    ​ 该方法应该编写为一个静态方法,用于不断获取SqlSession连接。获取的连接可以指定是否自动提交
    ​ 同时这里可以看到SqlSessionFactory明显是单例模式,SqlSession是工厂模式。

    3、编写需要的POJO和对应的POJOMapper(inteface)

    ​ 这里就是Mybatis的好处了,可以将数据库查询出来的数据直接匹配到Java普通对象上去。

    lombak插件

    ​ 对于POJO类,需要编写属性名、无参构造方法,[有参构造方法],Getter和Setter方法以及toString方法。可以采用lombak插件进行简化代码编写,通过@Data和@NoArgsConstructor和@AllArgsConstructor来自动生成方法,只需要编写属性名即可。

    4、编写POJOMapper.xml或者注解方式

    ​ 这里就是实现POJOMapper中定义的方法,复杂的语句或者结果集映射最好采用.xml方式,简单的语句采用@注解方式即可。

    .xml 方式

    ​ 在这种方式下能使用Mybatis功能更多,同时也更加灵活

    ResultMap结果集映射

    • 简单的结果集映射(一对一):仅仅是修改字段和SQL查询出来的字段不一致的情况。
    • 复杂的结果集映射(多对一):查询出来的数据字段对应着一个对象,但是该对象包含着另外一种对象,这时候就要使用到association标签,例如练习代码中多位学生对应着一位老师,每个学生对象中包含着老师对象。
    • 复杂的结果集映射(一对多):查询出来的数据表示着一个对象,但是该对象包含着另外一种对象的集合,这时候就要使用到collection标签,例如练习代码中一位老师对应着多位学生,每个老师对象中包含着学生对象的集合。

    使用复杂结果集映射可以采用两种方式(例子见练习代码mybatis-05):

    1. 子查询的方式:利用父查询的某字段查询出关联对象的信息输出,这种方式SQL代码简单但是.xml文件逻辑复杂
    2. 联表查询的方式:直接利用join的方式写出对应的SQL代码,然后在.xml文件中写出查询字段的结果映射即可。

    动态SQL

    ​ 动态SQL的目的是减少在Java代码的SQL语句的逻辑判断拼接和避免重复SQL(重复指的是仅仅只是where或者是set不同)的编写(例子见练习代码mybatis-06)。

    • <if 标签 类似于if
    • <choose <when <otherwise 标签 类似于switch
    • <where <set 标签 是<trim标签的特殊情况,可以用来代替SQL语句中where和set关键字
    • <sql <include 标签 代码片段,可以使用相同的代码片段
    • <foreach 标签,生成一段可以控制开头符号、结尾符号和分隔符的SQL语句

    注解方式

    ​ 在这种方式下能使用基本的SQL语句和映射

    • @Insert(插入SQL)
    • @Delete(删除SQL)
    • @Update(更新SQL)
    • @Select(查询SQL)
    • @Parm(字段别名)

    5、注册Mapper

    ​ 在mybatis-config文件中注册mapper,有三种方式:

    • resource:指定.xml文件的路径,如果只采用了注解的方式,那么就不能用该方式注册Mapper
    • package:指定.xml文件包名,必须要保证POJOMapper和POJOMapper.xml在一包下,同时如果只采用了注解方式没有问题。
    • class:指定注册Mapper的全类名,必须要保证POJOMapper和POJOMapper.xml在一包下同时如果只采用了注解方式没有问题。

    6、测试

    Mybatis缓存

    • 一级缓存,会话级缓存,默认开启不可关闭。增删改操作会刷新缓存,除非设置不刷新

    • 二级缓存,Mapper级缓存,会话关闭时一级缓存刷写到二级缓存中,

    • 查询顺序:二级缓存 -> 一级缓存 -> 数据库

  • 相关阅读:
    pymysql模块的简单操作
    day21--继承--派生
    subprocess模式,re模式,logging模块, 防止测试自动执行, 包的理论
    前端知识
    Django框架
    jieba/word cloud
    python语法基础知识
    Vue框架——Vue指令
    Vue框架基础
    Django——静态文件配置和连接数据库
  • 原文地址:https://www.cnblogs.com/ginkgo-/p/14854781.html
Copyright © 2011-2022 走看看