Mybatis——全局配置文件详解

Mybatis全局配置文件

接下来一一讲述其属性和如何使用它:

目录结构:
加粗样式

1.properties:属性配置

用于配置属性配置,比如我们的数据库连接属性,上个博客中我写的是直接配置在全局文件中的,现在我们可以创建一个db.properties文件来引用它:

properties节点还有一个子节点properties用于配置具体的每个属性,如下:(properties其父节点是configuration,和dataSource不是同一级的)

    <properties>
        <property name="jdbc.username" value="root"/>
        <property name="jdbc.password" value="...."/>
    </properties>
。。。。
。。。。
。。。。  
          <dataSource type="POOLED">
                <property name="username" value="${jdbc.username}"/>
                <property name="password" value="${jdbc.password}"/>
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost/db_mybatis"/>
            </dataSource>

我把username和password配置在了properties中,drviver和url没有,这样同样可以使用,但是这样配置还是将其配置在了全局配置文件中,没有意义,我们使用properties的resouce和url 属性引用外部的文件,使其独立出来,更方便于管理和修改:

<properties resource="config/db.properties"></properties>
。。。。。
。。。。
。。。。

      <dataSource type="POOLED">
                <property name="username" value="${jdbc.username}"/>
                <property name="password" value="${jdbc.password}"/>
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost/db_mybatis"/>
            </dataSource>

db.properties文件内容:

jdbc.username=root
jdbc.password=....

2.settings: 设置项

settings包含很多的设置项,接下来讲述几个比较常用的设置项:

1):mapUnderscoreToCamelCase:
映射下划线到驼峰:简单的讲就是。。。数据库库字段映射到java对象
数据库的命名一般是使用下划线的方式:
https://www.cnblogs.com/pangguoming/p/7126512.html
java一般是使用驼峰方式:
https://baike.baidu.com/item/驼峰式大小写/3976226?fr=aladdin

    <settings>
        <setting name="mapUnderscoreToCamelCase" value="true"/>
    </settings>

默认值是false,设置成true可以启用:
为什么我们要设置此配置呢,因为会发生这样的情况:
我们数据库中的字段有一个叫 Employee_Name, 在Java中我们的对象名为employeeName ,当我们在EmployeeMapper.xml 文件中设置select语句时,我们需要使用别名才可以获取并注入对象中,如果使用 select* from 就不可以获取并注入,这样就会很麻烦,现在配置这个就可以解决,其内置了下划线到驼峰的转换:
https://segmentfault.com/a/1190000010240142

源码中发现其内部只是把所有下划线去掉了,然后把所有的字母换成了小写,所以你只要字母一样并且顺序一样,都可以匹配上,但是最好还是按照标准来命名

3.typeAliases:别名处理

A type alias is simply a shorter name for a Java type. It’s only relevant to the XML configuration and simply exists to reduce redundant typing of fully qualified classnames.

类型别名只是Java类型的较短名称。 它仅与XML配置相关,并且只是为了减少完全限定类名的冗余类型而存在。

先上代码:

    <typeAliases>
        <typeAlias type="com.chenx.mybatis.entities.Employee" alias="employee"></typeAlias>
    </typeAliases>

type:指定你想指定的类
alias:指定你想换成的别名,默认是类名,不区分大小写

如何我们使用的类非常多,一个一个取名也太麻烦了把:

    <typeAliases>
        <package name="com.chenx.mybatis.entities"/>
    </typeAliases>

使用package 指定这个路径下的包的所有子包等,全部使用别名,但是都是使用的默认别名——类名(不区分大小写)

但是这样会发生冲突——父包和子包中有一个一样名字的类:

@Alias("emp")
public class Employee {

在对应的类上加上注解@Alias(“name”)

Mybatis中自行取名的别名:
基本类型: int ,long , short ,…
在类型前面加上_来表示,如:_int,_long,_short
包装类型:String, Integer…
直接使用小写 如:string, int/integer
还有Date,Object 等也是小写

4.environments:环境配置

首先先给出代码:

    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
            </dataSource>
        </environment>

        <environment id="test">
            <transactionManager type=""></transactionManager>
            <dataSource type=""></dataSource>
        </environment>
    </environments>

->mybatis 支持配置多个环境,通过属性default来具体指定使用的环境,如上使用了development就会使用此环境的配置

->transactionManager:事务管理器,mybatis有自己的事务管理器,有二个:

  1. typeAliasRegistry.registerAlias(“JDBC”, JdbcTransactionFactory.class);
  2. typeAliasRegistry.registerAlias(“MANAGED”, ManagedTransactionFactory.class);

->dataSource :数据源
type:三种

  1. typeAliasRegistry.registerAlias(“JNDI”, JndiDataSourceFactory.class); web应用服务器,如tomcat
  2. typeAliasRegistry.registerAlias(“POOLED”, PooledDataSourceFactory.class); 连接池,mybatis自己的
  3. typeAliasRegistry.registerAlias(“UNPOOLED”, UnpooledDataSourceFactory.class); 没有连接池

以上的事务管理器,和数据源等配置,等到ssm整合的时候都将交给spring

5.mapper

用于配置映射文件的位置,可以使用mapper或者package:

配置具体的一条映射文件:

    <mappers>
        <mapper resource="com/chenx/mybatis/dao/EmployeeMapper.xml"></mapper>
    </mappers>

配置多条映射文件:

    <mappers>
        <package name="com.chenx.mybatis.dao"/>
   </mappers>

使用package条件:
1.必须接口和映射文件名一致
2.必须二者在同一个包里

另外还需注意配置文件的标签顺序要遵守以上顺序

发布了73 篇原创文章 · 获赞 14 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/daguniang123/article/details/94830936