mybatis config
Posted 陈修行
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mybatis config相关的知识,希望对你有一定的参考价值。
mybatis 配置相关
1、结构目录以及mybatis-config.xml的标签属性
- configuration(配置)
- properties(属性)
- settings(设置)
- typeAliases(类型别名)
- typeHandlers(类型处理器)
- objectFactory(对象工厂)
- plugins(插件)
- environments(环境配置)
- environment(环境变量)
- transactionManager(事务管理器)
- dataSource(数据源)
- environment(环境变量)
- databaseIdProvider(数据库厂商标识)
- mappers(映射器)
数据来源于mybatis官方文档 https://mybatis.org/mybatis-3/zh/configuration.html
2、属性(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>
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatis?useSSL=false&useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8
username=root
password=root
只需要在在mybatis-config.xml中添加properties标签即可
<properties resource="database.properties"/>
由于DTD约束了XML的文档结构,所以标签应该放在首位
同时也可以在properties标签的子元素中设置
<properties resource="org/mybatis/example/config.properties">
<property name="username" value="dev_user"/>
<property name="password" value="F2Fa3!33TYyg"/>
</properties>
二者并存时以外部引用为准,本文不在做过多赘述
3、environments(环境配置)
MyBatis 可以配置成适应多种环境,这种机制有助于将 SQL 映射应用于多种数据库之中,不过尽管可以配置多个环境,但每个 SqlSessionFactory 实例只能选择一种环境。
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${rul}"/>
<property name="username" value="${password}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
<environment id="test">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=false&useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8"/>
<property name="username" value="root"/>
<property name="password" value="123"/>
</dataSource>
</environment>
</environments>
environments的default属性指定了默认的配镜环境。同时也可以在创建SqlSessionFactory时指定使用哪一套
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader, environment);
如果不声明,则使用的为默认default的环境配置
事务管理器(transactionManager)
在 MyBatis 中有两种类型的事务管理器(也就是 type="[JDBC|MANAGED]")
-
JDBC:配置直接使用了 JDBC 的提交和回滚设施
-
MANAGED:这个配置几乎没做什么,而是让容器来管理事务的整个生命周期
且在以后的Spring+mybatis中Spring模块会使用自带的管理器来覆盖前面的配置。所以二者了解即可
数据源(dataSource)
有三种内建的数据源类型(也就是 type="[UNPOOLED|POOLED|JNDI]")
- UNPOOLED 无池
- POOLED 有池
- JNDI EJB服务器使用,了解即可
3、映射器(mappers)
mapper映射器的作用是告诉MyBatis到哪里去找到这些语句
有四种方法:
- 使用相对于类路径的资源引用
<mappers>
<mapper resource="dao/UserMapper.xml"/>
</mappers>
- 使用完全限定资源定位符(URL) 不推荐使用!
<mappers>
<mapper url="file:///var/mappers/AuthorMapper.xml"/>
</mappers>
- 使用映射器接口实现类的完全限定类名
<mappers>
<mapper class="dao.UserMapper"/>
</mappers>
- 将包内的映射器接口实现全部注册为映射器
<mappers>
<package name="dao"/>
</mappers>
如果使用package或者class两种,需要接口与对应的xml文件同名同包。否则mybatis找不到对应关系
4、类型别名(typeAliases)
类型别名可为 Java 类型设置一个缩写名字。 它仅用于 XML 配置,意在降低冗余的全限定类名书写。
有两种方式:
- 自定义 typeAlias
<typeAliases>
<typeAlias type="entity.User" alias="user"/>
</typeAliases>
这样在所有xml中如果有要使用全限定名(entity.User)的地方都可以替换为别名(user)
- 包扫描 package
<typeAliases>
<package name="entity"/>
</typeAliases>
使用package时,mybatis会扫描声明的包下所有类,并设置类的首字母小写为默认别名
如果想要更改默认的别名,需要在实体类加注解
@Alias("u")
public class User {
private int id;
private String name;
private String pwd;
}
这样就可以覆盖调默认被设置为user的别名为u
好了,现在我们再也不用写很长的实体类全限定名了,可以用已经配置好的alias代替,这在实体类很多的项目中时十分有用的
mybatis也为我们提供了许多默认的别名
总的来说:
-
基本数据类型别名为前面加下划线"_" 例如: int _int
-
基本类型包装类为原数据类型首字母小写 例如: Double double
-
其他JDK自带的工具类等同为首字母小写 例如:Map map
5、设置Setting
这是 MyBatis 中极为重要的调整设置,它们会改变 MyBatis 的运行时行为。
- cacheEnabled 是否开启缓存,以后会提到。
- lazyLoadingEnabled 是否开启懒加载
- logImpl 日志的具体实现
- mapUnderscoreToCamelCase 是否开启驼峰命名自动映射,即从经典数据库列名 user_name 映射到经典 Java 属性名 userName。
其余暂时不作为了解的内容
6、其他配置
类型处理器(typeHandlers)
类型处理器是用来平衡java中和mysql中数据类型不统一的问题的,暂不作为重点了解即可。
objectFactory(对象工厂)和plugins(插件)
暂时不需要作为了解的内容,本文略
7、总结
mybatis-config.xml文件作为mybatis的核心配置,要掌握的大概就这么多,其余一些缓存、日志相关会在以后的进度中相继添加。目前要掌握的不是特别多。实践最重要!
以上是关于mybatis config的主要内容,如果未能解决你的问题,请参考以下文章
编写javaweb用到的基本依赖,mybatis-config.xml代码,SqlSessionFactoryUtils.java