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有自己的事务管理器,有二个:
- typeAliasRegistry.registerAlias(“JDBC”, JdbcTransactionFactory.class);
- typeAliasRegistry.registerAlias(“MANAGED”, ManagedTransactionFactory.class);
->dataSource :数据源
type:三种
- typeAliasRegistry.registerAlias(“JNDI”, JndiDataSourceFactory.class); web应用服务器,如tomcat
- typeAliasRegistry.registerAlias(“POOLED”, PooledDataSourceFactory.class); 连接池,mybatis自己的
- 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.必须二者在同一个包里
另外还需注意配置文件的标签顺序要遵守以上顺序