1.MyBatis框架核心配置文件
MyBatis核心配置文件约束
1)框架核心MyBatis-config.xml配置的内容和顺序(文件名可以自己定义,这里MyBatis-config.xml)
官网链接:http://www.mybatis.org/mybatis-3/zh/configuration.html#properties
2)属性(properties)属性都是可外部配置且可动态替换的
(1)在property定义name value,其他地方引用
<configuration>
<properties>
<property name="name" value="root"/>
<property name="word" value="123456"/>
</properties>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://127.0.0.1:3306/test"/>
<property name="username" value="${name}"/>
<property name="password" value="${word}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/czh/mapper/User.xml"/>
</mappers>
</configuration>
(2)properties标签中resource属性引入properties文件属性,其他地方引用
新建properties.properties文件
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/test
jdbc.username=root
jdbc.password=123456
properties标签resource属性引入
<configuration>
<properties resource="properties.properties"></properties>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/czh/mapper/User.xml"/>
</mappers>
</configuration>
如果属性在不只一个地方进行了配置,那么 MyBatis 将按照下面的顺序来加载:
- 在 properties 元素体内指定的属性首先被读取。
- 然后根据 properties 元素中的 resource 属性读取类路径下属性文件或根据 url 属性指定的路径读取属性文件,并覆盖已读取的同名属性。
- 最后读取作为方法参数传递的属性,并覆盖已读取的同名属性。
因此,通过方法参数传递的属性具有最高优先级,resource/url 属性中指定的配置文件次之,最低优先级的是 properties 属性中指定的属性。
2)设置(settings)mybatis全局配置参数,全局参数将会影响mybatis的运行行为。比如:开启二级缓存、开启延迟加载
3)类型别名(typeAliases)类型别名是为 Java 类型设置一个短的名字。 它只和 XML 配置有关,存在的意义仅在于用来减少类完全限定名的冗余
(1)直接在typeAlias标签指定别名
<typeAliases>
<typeAlias alias="user" type="com.czh.entity.User"/>
</typeAliases>
(2)package标签指定一个包名,MyBatis 会在包名下面搜索需要的 Java Bean
<typeAliases>
<package name="com.czh.entity"/>
</typeAliases>
可以通过@Alias指定别名,如果没有注解的情况下,会使用 Bean 的首字母小写的非限定类名来作为它的别名,比如
com.czh.entity.User的别名user
@Alias("user")
public class User {
private Integer id;//自增id
private String name;//姓名
private String sex;//性别
private Integer age;//年龄
}
4)typeHandlers 类型转换器 每当MyBatis 设置参数到PreparedStatement 或者从ResultSet 结果集中取得值时,就会使用TypeHandler 来处理数据库类型与java 类型之间转换。下表描述了默认TypeHandlers
5) mappers 映射器 mappers标签是MyBatis框架提供的SQL映射文件的加载器,用于指定项目中SQL映射文件的位置
<!-- 使用相对于类路径的资源引用 -->
<mappers>
<mapper resource="com.czh.mapper.User.xml"/>
</mappers>
<!-- 使用完全限定资源定位符(URL) -->
<mappers>
<mapper url="file:///D:/mybatis/com/czh/mapper/User.xml"/>
</mappers>
<!-- 使用映射器接口实现类的完全限定类名 -->
<mappers>
<mapper class="com.czh.mapper.User"/>
</mappers>
<!-- 将包内的映射器接口实现全部注册为映射器 -->
<mappers>
<package name="com.czh.mapper"/>
</mappers>