Mybatis-配置解析

1.配置解析

1.核心配置文件

2.environments-环境配置

  • MyBatis 可以配置成适应多种环境,不过要记住:尽管可以配置多个环境,但每个 SqlSessionFactory 实例只能选择一种环境。
  • 注意一些关键点:
    • 默认使用的环境 ID(比如:default=“development”)。
    • 每个 environment 元素定义的环境 ID(比如:id=“development”)。
    • 事务管理器的配置(比如:type=“JDBC”)。
    • 数据源的配置(比如:type=“POOLED”)
  • 可以设置多套运行环境,但只能同时使用一套。Mybatis默认的事务管理是JDBC(当然不止一种事务管理),连接池:POOLED。 在 MyBatis 中有两种类型的事务管理器(也就是 type="[JDBC|MANAGED]"):

3.属性

  • 我们可以通过properties属性来实现引用配置文件【db.properties】

  • 引入外部配置文件

  • 可以在其中增加一些属性配置

  • 如果两个文件有同一个字段,优先使用外部配置文件

开始改造

  • 创建db.properties配置文件,.将(db.properties)配置文件引入(mybatis-config.xml)核心配置文件中

  • 在resources文件夹中创建新文件:db.properties

  • driver=com.mysql.cj.jdbc.Driver
    url=jdbc:mysql://localhost:3306/mybatis?useSSL=true&useUnicode=true&characterEncoding=UTF-8
    username=root
    password=root
    
  • 将标签写在(mybatis-config.xml)核心配置文件的第一位。并修改核心配置文件中的driver,url…的value。

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE configuration
            PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
            "http://mybatis.org/dtd/mybatis-3-config.dtd">
    <configuration>
        <!--引入外部配置文件-->
        <properties resource="db.properties">
            <property name="password" value="root"/>
        </properties>
        <environments default="development">
            <environment id="development">
                <transactionManager type="JDBC"/>
                <dataSource type="POOLED">
                    <property name="driver" value="${driver}"/>
                    <property name="url" value="${url}"/>
                    <property name="username" value="${username}"/>
                    <property name="password" value="${password}"/>
                </dataSource>
            </environment>
        </environments>
        <mappers>
            <mapper resource="edu/xalead/dao/UserMapper.xml"/>
        </mappers>
    </configuration>
    

2.typeAliases(类型别名)

  • 在" mybatis-config.xml "中编写别名,在 “引入外部(db.properties)配置文件” 的下方编写别名。

  • mybatis-config.xml代码:

  • <!--    起别名方法一:使用于实体类少的情况。目的,编写接口xml的sql语句时,type写的简单-->
        <typeAliases>
            <typeAlias type="edu.xalead.pojo.User" alias="User"/>
        </typeAliases>
        
    <!-- 起别名方法二:使用于实体类多的情况
    意思: edu.xalead.pojo.User的别名默认就是pojo包中User的小写类名。-->
    <typeAliases>
        <package name="edu.xalead.pojo.User"/>
    </typeAliases>
    
    
    //方法3
    @Alias("user")
    public class User(){}
    

    接口实现xml代码:

  • <?xml version="1.0" encoding="UTF-8" ?>
            <!DOCTYPE mapper
                    PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                    "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
            <!--namespace 绑定一对应的Dao/Mapper接口 -->
            <!--namespace中的名要和UserMapper.xml的接口一致-->
    <mapper namespace="edu.xalead.Dao.UserMapper">
    
        <!--select查询 id就是UserDao接口里面的方法的名字 resultType/Map是返回一个/多个结果集
        路径就写表的映射的路径-->
        <select id="getUserList" resultType="User">
           select * from mybatis.m_user;
        </select>
    
    </mapper>
    

3.设置(settings)

  • 目前需要记住的(都在mybatis文档中)主要记住以下几个
    在这里插入图片描述在这里插入图片描述
  • <settings>
      <setting name="cacheEnabled" value="true"/>
      <setting name="lazyLoadingEnabled" value="true"/>
      <setting name="multipleResultSetsEnabled" value="true"/>
      <setting name="useColumnLabel" value="true"/>
      <setting name="useGeneratedKeys" value="false"/>
      <setting name="autoMappingBehavior" value="PARTIAL"/>
      <setting name="autoMappingUnknownColumnBehavior" value="WARNING"/>
      <setting name="defaultExecutorType" value="SIMPLE"/>
      <setting name="defaultStatementTimeout" value="25"/>
      <setting name="defaultFetchSize" value="100"/>
      <setting name="safeRowBoundsEnabled" value="false"/>
      <setting name="mapUnderscoreToCamelCase" value="false"/>
      <setting name="localCacheScope" value="SESSION"/>
      <setting name="jdbcTypeForNull" value="OTHER"/>
      <setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString"/>
    </settings>
    

4.其他配置

  • typeHandlers(类型处理器)
  • objectFactory(对象工厂)
  • plugins(插件)
    • Mybatis Plus 快速开发

5.映射器(mappers)

<mappers>   
    <!-- 方法一:使用相对于类路径的资源引用 -->  
    <!--<mapper resource="edu/xalead/dao/UserMapper.xml"/>-->   
    
    <!-- 方法二:使用映射器接口实现类的完全限定类名 -->  
    <!--<mapper class="edu.xalead.dao.UserMapper"/>-->   
    
    <!-- 方法三:将包内的映射器接口实现全部注册为映射器 -->   
    <package name="edu.xalead.dao"/></mappers>
  • 注意点:方法二和三,设置时,接口和接口.xml的名字要一致而且要在同一个包中。

这些配置会告诉 MyBatis 去哪里找映射文件

6.生命周期和作用域

在这里插入图片描述

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

SqlSessionFactoryBuilder:

  • 一旦创建了SqlSessionFactory,就不再需要它了
  • 局部变量

SqlSessionFactory:

  • 说白了就像:数据库连接池
  • 一旦创建在运行期间一直存在
  • 最佳作用域是应用作用域
  • 最简单的是使用单例模式或者静态单例模式

SqlSession:

  • 连接到连接池的一个请求
  • 它的实例不是线程安全的,因此是不能被共享的,所以它的最佳作用域是请求或方法作用域
  • 用完之后需要赶紧关闭,否则资源被占用

在这里插入图片描述
每一个mapper就代表具体业务。

欢迎访问我的个人博客:http://www.ayjup.cn

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值