[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>
这样就方便多了.
浙公网安备 33010602011771号