Mybatis配置相关

144 阅读2分钟

要点

属性(properties)

这些属性可以在外部进行配置,并可以进行动态替换。你既可以在典型的 Java 属性文件中配置这些属性,也可以在 properties 元素的子元素中设置。

先创建db.properties文件

driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=utf8&useSSL=true&serverTimezone=Asia/Shanghai
username=root
password=123456

然后在config.xml中引入

<?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"></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="com/mybatis/DAO/PeopleMapper.xml"/>
    </mappers>
</configuration>

properties中的resource数据优先,如果在标签中添加同名属性,会优先取resource中的值

环境配置(environments)

不过要记住:尽管可以配置多个环境,但每个 SqlSessionFactory 实例只能选择一种环境。每个数据库对应一个 SqlSessionFactory 实例
注意一些关键点:

默认使用的环境 ID(比如:default="development")。
每个 environment 元素定义的环境 ID(比如:id="development")。
事务管理器的配置(比如:type="JDBC")。
数据源的配置(比如:type="POOLED")。
默认环境和环境 ID 顾名思义。 环境可以随意命名,但务必保证默认的环境 ID 要匹配其中一个环境 ID。

  • 注意 The content of element type "configuration" must match "(properties?,settings?,typeAliases?,typeHandlers?,objectFactory?,objectWrapperFactory?,reflectorFactory?,plugins?,environments?,databaseIdProvider?,mappers?)".

即configuration中的标签须按顺序

别名(typeAliases)

  • 第一种
<typeAliases>
        <typeAlias type="com.mybatis.pojo.People" alias="people"/>
</typeAliases>

所有需要写成com.mybatis.pojo.People的地方,都可以写别名为people。

  • 第二种
<typeAliases>
        <package name="com.mybatis.pojo"/>
</typeAliases>

所有需要写成com.mybatis.pojo.People的地方,都可以写成实体类的类名People,或者这个包下的其他类。

如果不想写类名就在Java类上面加注解@Alias(String value)

@Alias("P")
public class People {}

所有需要写成com.mybatis.pojo.People的地方,都可以写成P

  • 所有别名不区分大小写

设置(settings)

直接看文档

插件(plugins)

偷懒用

映射器(mappers)

  • 告诉 MyBatis 到哪里去找映射文件。 你可以使用相对于类路径的资源引用、或类名和包名 使用相对于类路径的资源引用
<mappers>
  <mapper resource="com/mybatis/DAO/AuthorMapper.xml"/>
</mappers>

使用映射器接口实现类的完全限定类名

  • 必须和java接口在同一个包下
  • 必须要java接口和Mapper.xml名字要一样
<mappers>
  <mapper class="org.mybatis.builder.BlogMapper"/>
</mappers>

将包内的映射器接口实现全部注册为映射器

  • 必须和java接口在同一个包下
  • 必须要java接口和Mapper.xml名字要一样
<mappers>
  <package name="org.mybatis.builder"/>
</mappers>