MyBatis配置文件_properties

MyBatis配置文件结构:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
-configuration
-properties(属性)
-property
-settings(全局配置参数)
-setting
-plugins(插件)
-plugin
-typeAliases(别名)
-typeAliase
-package
-environments(环境)
-environment
-transactionManager(事务管理)
-dataSource(数据源)
-mappers(映射器)
-mapper
-package

properties

属性值定义。properties标签中可以定义属性值,也可以引入外部配置文件。无论是内部定义还是外部引入,都可以使用${name}获取值。

例如:我们可以将数据源配置写到外部的db.properties中,再使用properties标签引入外部配置文件,这样可以做到动态配置数据源。

  1. 编写db.properties

    1
    2
    3
    4
    5
    1
    jdbc.driver=com.mysql.jdbc.Driver
    jdbc.url=jdbc:mysql://localhost:3306/mybatis
    jdbc.username=root
    jdbc.password=root
  2. 在配置文件中引入db.properties

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <properties resource="db.properties"></properties>
    <environments default="mysql">
    <environment id="mysql">
    <transactionManager type="JDBC"></transactionManager>
    <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>

当然我们也可以将数据源数据通过<properties>配置到MyBatis配置文件内,但这样做没什么意义。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<properties>
<property name="jdbc.driver" value="com.mysql.jdbc.Driver"></property>
<property name="jdbc.url" value="jdbc:mysql://localhost:3306/mybatis"></property>
<property name="jdbc.username" value="root"></property>
<property name="jdbc.password" value="root"></property>
</properties>
<environments default="mysql">
<environment id="mysql">
<transactionManager type="JDBC"></transactionManager>
<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>

MyBatis配置文件_settings

<settings>是配置MyBatis运行时的一些行为的,例如缓存、延迟加载、命名规则等一系列控制性参数。后期我们会使用该标签配置缓存和延迟加载等。

MyBatis配置文件_plugins

<plugins>是配置MyBatis插件的。插件可以增强MyBatis功能,比如进行sql增强,打印日志,异常处理等。后期我们会使用该标签配置分页插件。

MyBatis配置文件_typeAliases

MyBatis对常用类有默认别名支持,比如java.lang.Stirng的别名为string。除此之外,我们也可以使用<typeAliases>设置自定义别名。

为一个类配置别名

1
2
3
<typeAliases>
<typeAlias type="全类名" alias="别名"></typeAlias>
</typeAliases>

此时我们即可在映射文件中使用自定义别名,如:

  1. 配置文件:

    1
    2
    3
    <typeAliases>
    <typeAlias type="com.itbaizhan.pojo.User" alias="User"> </typeAlias>
    </typeAliases>
  2. 映射文件:

    1
    2
    3
    <select id="findAll" resultType="User">
    select * from user
    </select>

为一个所有包下的所有类配置别名

1
2
3
<typeAliases>
<package name="包名"></package>
</typeAliases>

此时该包下的所有类都有了别名,别名省略包名,和类名相同。如:

  1. 配置文件:

    1
    2
    3
    <typeAliases>
    <package name="com.itbaizhan.pojo"></package>
    </typeAliases>
  2. 映射文件:

    1
    2
    3
    <select id="findPage2" resultType="User" parameterType="PageQuery">\
    select * from user limit #{startIndex},#{pageSize}
    </select>

MyBatis配置文件_mappers

<mappers>用于注册映射文件或持久层接口,只有注册的映射文件才能使用,共有四种方式都可以完成注册:

  1. 使用相对路径注册映射文件

    1
    2
    3
    <mappers>
    <mapper resource="com/itbaizhan/mapper/UserMapper.xml"/>
    </mappers>
  2. 使用绝对路径注册映射文件

    1
    2
    3
    <mappers>
    <mapper url="file:///C:\Users\a\IdeaProjects\mybatiscase\mybatisDemo1\src\main\resources\com\itbaizhan\mapper\UserMapper.xml"/>
    </mappers>
  3. 注册持久层接口

    1
    2
    3
    <mappers>   
    <mapper class="com.itbaizhan.mapper.UserMapper"/>
    </mappers>
  4. 注册一个包下的所有持久层接口

    1
    2
    3
    <mappers>
    <package name="com.itbaizhan.mapper"/>
    </mappers>

MyBatis配置文件_sql 、include标签

<sql>用来定义可重用的sql片段,通过<include>引入该片段

如:sql语句查询字段起与Pojo属性相同的别名,该sql片段就可以重用

1
2
3
<sql id="findAllField">
select tid as id,tname as teachername
</sql>
1
2
3
4
<select id="findAll" resultType="Teacher" >
<include refid="findAllField"></include>
from teacher
</select>

MyBatis映射文件_特殊字符处理

在Mybatis映射文件中尽量不要使用一些特殊字符,如:<>等。

我们可以使用符号的实体来表示:

符号 实体
< <
> >
& &
'
"

如:

1
2
3
4
<select id="findById2" resultType="com.itbaizhan.pojo.Teacher">
<include refid="selectAllField"></include>
from teacher where tid &gt; #{id}
</select>