mybatis学习笔记3----对settings配置解析

4、配置解析

程序实例:mybatis-02包

  • mybatis-config.xml

  • MyBatis的配置文件包含它的行为和属性的设置

1.configuration(配置)

2.环境配置(environments)

Mybatis可以配置多种环境,但是每个SqlSessionFactory实例只能选择一种环境。

Mybatis默认的事务管理器就是 jdbc。

连接池是 POOLED

3.属性(properties)

mybatis支持外部配置文件,首先、创建一个db.properties文件写入

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatis?useSSL=true&useUnicode=true&characterEncoding=UTF-8
username=root
password=sa

在mybatis-config.xml中插入标签

  <!--properties配置文件必须在最上面,在xml中标签要按顺序写-->
    <properties resource="db.properties">

    </properties>
"jdbc:mysql://localhost:3306/mybatis?useSSL=true&amp;useUnicode=true&amp;characterEncoding=UTF-8"
这是原来配置需要有转义符,在properties中不需要转义

在中的属性修改为.

   <dataSource type="POOLED">
                <property name="driver" value="${driver}"/>
                <property name="url" value="${url}"/>
                <property name="username" value="${username}"/>
                <property name="password" value="${password}"/>
            </dataSource>

这里的value值要和配置文件中的name保存一致

也在标签中,写入属性。这种写法的优先级小于外部引用写法。

 <!--properties配置文件必须在最上面,在xml中标签要按顺序写-->
    <properties resource="db.properties">
        <property name="username" value="root"/>
        <property name="password" value="sa"/>
    </properties>

4.别名优化

  1. 类型别名可为 Java 类型设置一个缩写名字。 它仅用于 XML 配置,意在降低冗余的全限定类名书写
  <!--别名,xml中的别名标签必须放在第三个位置。默认的-->
    <typeAliases>
        <typeAlias type="com.kuang.pojo.User" alias="User"></typeAlias> 
    </typeAliases>

  1. 第二种别名也可以通过package来扫描,自动用类的小写来命名别名
<package name="com.kuang.pojo"/>
  1. 第三种,在实体类上加上注解来使用别名,注解值就是别名值

在这里插入图片描述

5.设置

这是 MyBatis 中极为重要的调整设置,它们会改变 MyBatis 的运行时行为

在这里插入图片描述

6.扩展配置

  • typeHandlers(类处理器)

  • objectFactory(对象工厂)

  • plugins(插件)

    ​ mybatis-generator-core生成器

    ​ mybatis-plus它的兄弟,用了之后更简洁,增删改查代码都省了

    ​ 通用mapper

7.映射器mappers

MapperRegistry:注册绑定我们的Mapper文件。

  • 方式一,通过xml文件绑定映射
 <mappers>
        
        <mapper resource="com/kuang/dao/UserMapper.xml"></mapper>
        
    </mappers>

  • 方式二,通过class对象来绑定

     <mappers>
    
           <!-- <mapper resource="com/kuang/dao/UserMapper.xml"></mapper>-->
            <mapper class="com.kuang.dao.UserMapper"></mapper>
        </mappers>
    
    

    注意:(与resourse相比,class,package必须要满足下面两点,resource不做要求。)

    • 接口和他的Mapper配置文件必须同名。
    • 接口和他的Mapper配置文件必须在一个包下。
  • 方式三,

     <mappers>
           <!-- <mapper resource="com/kuang/dao/UserMapper.xml"></mapper>-->
            <!---<mapper class="com.kuang.dao.UserMapper"></mapper>-->
      <package name="com.kuang.dao"/>
        </mappers>
    
    

    要求和class一样。

8.生命周期和作用域

在这里插入图片描述

生命周期和作用域是非常重要的,错误的使用会导致并发问题

SqlSessionFactoryBuilder(创建工厂):

  • 当一旦创建了SqlSessionFactory,就不再需要它了

  • 局部变量

SqlSessionFactory:

  • 类似于数据库的连接池。

  • SqlSessionFactory一旦被创建就应该在应用的运行期间一直存在,不会丢弃和重写创建

  • SqlSessionFactory的最佳作用域是应用作用域。

  • 最简单的就是单例模式

SqlSession:

  • 类似于一个连接池的请求
  • 需要关闭,否则造成资源的浪费

在这里插入图片描述

总结

这里Mapper,就是代表一个具体的业务。SqlSessionFactory可以创建很多个SqlSession,每一个SqlSession就是一个线程,它也可以创建很多个Mapper业务。

猜你喜欢

转载自blog.csdn.net/weixin_45263852/article/details/114413276
今日推荐