本文为 SSM 框架系列之 MyBatis 第三部分:配置解析
其它内容的链接如下:
【1】MyBatis01:初识 MyBatis 与 第一个 MyBaits 程序
【2】MyBatis02:CRUD 操作
【3】MyBatis03:配置解析
【4】MyBatis04:作用域和生命周期
【5】MyBatis05:分页
【6】MyBatis06:日志
【7】MyBatis07:使用注解开发
【8】MyBatis08:ResultMap 的结果集映射
【9】MyBatis09:动态 SQL 与缓存
传送门:
1 配置解析
关于配置解析一定要根据官方文档来学习,官方文档的传送门【CLICK】
1.1 配置文件的顶层结构
MyBatis 具有如下的配置信息:
- properties(属性)
- settings(设置)
- typeAliases(类型别名)
- typeHandlers(类型处理器)
- objectFactory(对象工厂)
- plugins(插件)
- environments(环境配置)
- environment(环境变量)
- transactionManager(事务管理器)
- dataSource(数据源)
- environment(环境变量)
- databaseIdProvider(数据库厂商标识)
- mappers(映射器)
接下来总结一下其中比较重要的几个,另外一些不是不重要,而是在实际使用中,我们一般都是直接用它的默认配置。
1.2 属性(properties)标签
除了原来在 mybatis-config.xml
中直接输入数据库的连接属性外, 还可以通过修改 xml 文件中引入外部配置文件来实现。
示例:
原代码:
<!--mybatis 的官方默认代码,不要修改它-->
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<!--数据库驱动器的驱动-->
<property name="driver" value="com.mysql.jdbc.Driver"/>
<!--数据库的 url-->
<property name="url"
value="jdbc:mysql://localhost:3306/mybatis?useSSL=false&useUnicode=true&characterEncoding=utf8"/>
<!--数据库的名称和密码-->
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
现代码:
<properties resource="propertyConfig.properties"/>
<!--mybatis 的官方默认代码,不要修改它-->
<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>
其中 propertyConfig.properties
文件在 resources
目录下,内容为:
driver = com.mysql.jdbc.Driver
url = jdbc:mysql://localhost:3306/mybatis?useSSL=false&useUnicode=true&characterEncoding=utf8
username = root
password = 123456
当然也可以配置文件中放一半,xml 文件中放一半。如:
<properties resource="propertyConfig.properties">
<property name="username" value="root"/>
<property name="password" value="123456"/>
</properties>
driver = com.mysql.jdbc.Driver
url = jdbc:mysql://localhost:3306/mybatis?useSSL=false&useUnicode=true&characterEncoding=utf8
如果两个文件有同一个字段,优先使用外部配置文件,即 .properties
文件。
1.3 设置(settings)标签
关于设置的内容,推荐阅读官方文档,其中 mapUnderscoreToCamelCase
这个我记忆犹新,因为之前做书城项目的时候,由于没有用到框架,这里一直出错。
一个配置完整的 settings 标签的示例如下:
<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>
1.4 类型别名(typeAliases)标签
类型别名是为 Java 类设置一个缩写名字,意在降低冗余的全限定类名书写。
1)全限定类名的缩写
<typeAliases>
<typeAlias alias="User" type="sharm.pojo.User"/>
</typeAliases>
2)指定包名的缩写,这个时候 MyBatis 会使用 Bean 的首字母小写的非限定类名来作为它的别名。
<typeAliases>
<package name="sharm.pojo"/>
</typeAliases>
这个时候 sharm.pojo.User 类的别名只能是 user,此时如果想修改别名,可以在该类中写入注解,如:
@Alias("name")
public class User {
...
}
此时,User 的别名就成了 name,MyBatis 优先使用注解作为别名。
1.5 环境(environments)标签
这一步的配置按照默认的配置来就可以,同时要记住:
- MyBatis 可以配置多种环境,适用于开发、运维等;
- 尽管可以配置多个环境,但每个 SqlSessionFactory 实例只能选择一种环境;
- 默认的事务管理器是 JDBC,默认的连接池是 POOLED。
1.6 映射器(mappers)标签
1.7 本章总结
- 配置 XML 文件中每一个标签的位置都是固定的,如果位置写错的话 IDEA 也会提醒我们。