[MyBatis 5] SqlMapConfig.xml文件中的常用配置

配置内容作用
<properties> 用来加载属性文件
<settings> 用来设置全局参数
<typeAliases> 用来设置类型的别名
<typeHandlers> 用来设置类型处理器
<objectFactory> 用来设置对象工厂
<plugins> 用来设置插件
<environments> 用来设置mybatis的环境
<mappers> 用来配置映射文件

  从表中我们看出SqlMapConfig.xml中我们存在一些配置标签,我们挑几个常用的来解释一下 : 

1. properties标签 

  它是用来加载属性文件的,原本我们的项目中用来连接数据库时是这样的 : 

        <environment id="development">
            <!-- 使用jdbc事务管理,目前由mybatis来管理 -->
            <transactionManager type="JDBC" />
            <!-- 数据库连接池,目前由mybatis来管理 -->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver" />
                <property name="url" value="jdbc:mysql://localhost:3306/demo" />
                <property name="username" value="root" />
                <property name="password" value="root" />
            </dataSource>
        </environment>

  这样子的配置方式肯定不是实际项目开发中所使用的,我们更多的是将配置文件写在jdbc.properties文件中,然后动态的加载其中的内容,这个时候我们就使用到了<properties>标签,我们添加一个properties标签 : 

 <properties resource="jdbc.properties"></properties>

  resource属性表示的是文件的地址.这样我们就可以动态的加载数据库选项 : 

        <environment id="development">
            <!-- 使用jdbc事务管理,目前由mybatis来管理 -->
            <transactionManager type="JDBC" />
            <!-- 数据库连接池,目前由mybatis来管理 -->
            <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>

  这样子代码就清晰多了.

 

2. <settings> 用来设置全局参数的,后面用到延迟加载的时候会来设置它.

 

3. <typeAliases>用来设置类型的别名.

  在mapper.xml文件中我们有许多的statement,statement需要parameterType来指定参数的类型,需要resultType来指定输出结果的类型.如果在指定类型名时使用完整的包名,有时候会很长,不方便进行开发,那么我们可以针对paramterType和resultType指定的类型定义一些别名,在mapper.xml中通过别名<typeAliases>来定义,方便开发.MaBatis有默认支持的一些别名,一般基本类型都有别名,如下:

 

  但是针对POJO需要我们自定义别名了,比如我们将自己的Customer对象定义为customer,如下

  

<typeAliases>
    <tyleAliase type="com.czp.model.Customer" alias="customer" />
</typeAliases>

  然后输入参数或者输出参数用到com.czp.model.Customer时就可以变更为customer了.

    <select id="findCustomerById" parameterType="int" resultType="customer">
        SELECT * FROM customer WHERE id = #{id}
    </select>

  但是有个问题,如果工程中有许多个POJO,那就得定义很多个别名,这样很烦.MyBatis为我们提供了了一个<package>标签,它会自动扫描指定包下的类,然后自动为其添加别名,类名就是别名,首字母大小写都可以 : 

    <typeAliases>
        <package name="com.czp.model"></package>
    </typeAliases>

  这样就方便多了.

   

posted @ 2017-05-21 18:27  陈皮12311  阅读(134)  评论(0)    收藏  举报