mybatis中的全局配置文件SqlMapConfig.xml在开发中的一些常用配置,首先看一下该全局配置文件中都有哪些可以配置的东西:
配置内容作用
<properties>用来加载属性文件
<settings>用来设置全局参数
<typeAliases>用来设置类型的别名
<typeHandlers>用来设置类型处理器
<objectFactory>用来设置对象工厂
<plugins>用来设置插件
<environments>用来设置mybatis的环境
<mappers>用来配置映射文件
<environments>是用来配置mybatis的环境的,在和Spring整合前是由mybatis自己管理的,但是和Spring整合后,这些配置都将被废弃掉,<environments>部分在前面已经有提到过,这里就不再赘述了。然后objectFactory和plugins一般我们不用,所以在这里就不总结了,<typeHandlers>类型处理器是mybatis中用来完成jdbc类型和java类型之间转换的,mybatis默认支持的类型处理器基本够我们使用了,一般不需要自定义。这篇博文主要来总结一下剩下的几个配置的用法。
1、properties属性
作用:将数据连接单独配置在db.properties中,只需要在SqlMapConfig.xml中加载db.properties的属性值,在SqlMapConfig.xml中就不需要对数据库连接参数进行硬编码。数据库连接参数只配置在db.properties中,方便对参数进行统一管理,其它xml可以引用该db.properties。
db.properties的内容:
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatisjdbc.username=root
jdbc.password=root
在SqlMapConfig.xml中加载db.properties
<!-- 加载数据库文件db.properties -->
<properties resource="db.properties">
<!-- properties中还可以配置一些属性名和属性值,此处的优先加载 -->
<!-- <property name="driver" value=""/> -->
</properties>
<!-- 和spring整合后 environments配置将废除-->
<environments default="development">
<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>
</environments>
properties特性:
注意:
(1)在properties元素体内定义的属性优先读取。
(2)然后读取properties元素中resource或url加载的属性,它会覆盖已读取的同名属性。
(3)最后读取parameterType传递的属性,它会覆盖已读取的同名属性。
建议:
(1)不要在properties元素体内添加任何属性值,只将属性值定义在properties文件中。
(2)在properties文件中定义属性名要有一定的特殊性,如xxxx.xxxx(jdbc.driver)。
2、settings全局参数设置
mybatis框架运行时可以调整一些运行参数。比如,开启二级缓存,开启延迟加载等等。全局参数会影响mybatis的运行行为。
mybatis-settings的配置属性以及描述
官方setting的定义
<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="defaultExecutorType" value="SIMPLE"/>
<setting name="defaultStatementTimeout" value="25"/>
<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>
3、typeAiases(别名)——重点掌握
这是配置中的一个重点,我们知道,在mapper.xml中,定义很多的statement,statement需要parameterType指定输入参数的类型、需要resultType指定输出结果的映射类型。如果在指定类型时输入类型全路径,有时候会很长,不方便进行开发,那么我们就可以针对parameterType或resultType指定的类型定义一些别名,在mapper.xml中通过别名<typeAliases>来定义,方便开发。
批量定义别名(常用)
<!-- 批量别名的定义:
package:指定包名,mybatis会自动扫描包中的pojo类,自动定义别名,别名就是类名(首字母大写或小写都可以)
-->
<typeAliases>
<package name="com.mybatis.entity"/>
<package name="其它包"/>
</typeAliases>
这就爽了,如果进行了上面这样设置,那么所有放在com.mybatis.entity包下的pojo都可以不用定义了,直接使用类名就可以了,所以我们直接使用user即可。毫无疑问,开发中肯定使用这个批量的别名定义。
4、mappers(映射配置)
4.1、通过resource加载单个映射文件
<!-- 加载映射文件 -->
<mappers>
<!--通过resource方法一次加载一个映射文件 -->
<mapper resource="sqlmap/User.xml"/>
<mapper resource="mapper/UserMapper.xml"/></mappers>
4.2、通过mapper接口加载单个映射文件
<!-- 通过mapper接口加载单个映射配置文件
遵循一定的规范:需要将mapper接口类名和mapper.xml映射文件名称保持一致,且在一个目录中;
上边规范的前提是:使用的是mapper代理方法; --><mapper class="com.mybatis.mapper.UserMapper"/>
按照上边的规范,将mapper.java和mapper.xml放在一个目录,且同名。
4.3、批量加载mapper(推荐使用)
但是还是有个弊端,就跟上面那个别名的配置一样,如果现在有好多个mapper怎么办,所以mybatis也给我们提供了批量加载方法:我们只要指定mapper接口的包名,mybatis自动扫描包下面所有的mapper接口进行加载。当然,还是要遵循上面的那个规范。配置如下:
<!-- 批量加载映射配置文件,mybatis自动扫描包下面的mapper接口进行加载
遵循一定的规范:需要将mapper接口类名和mapper.xml映射文件名称保持一致,且在一个目录中;
上边规范的前提是:使用的是mapper代理方法;
--><package name="com.mybatis.mapper"/>
这样com.mybatis.mapper包下的所有mapper.xml映射文件都可以加载了,这就更加简洁了。在开发中推荐使用这种批量加载映射文件的方法。
关于SqlMapConfig.xml文件中的配置就总结这么多吧~
网友评论