1、MyBatis全局配置文件SqlMapConfig.xml样例。
2、SQL映射配置文件样例。
3、开启延迟加载。
4、开启自动驼峰命名规则(camel case)映射。
5、保留2位小数的配置。
1、MyBatis全局配置文件SqlMapConfig.xml样例
【示例】下面按照MyBatis的全局配置文件中的配置顺序,给出一个配置了全部参数的样例配置文件。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 1.properties属性引入外部配置文件 -->
<properties resource="config/db.properties">
<!-- property里面的属性全局均可使用 -->
<property name="jdbc.username" value="root"/>
<property name="jdbc.password" value="123456"/>
<!-- 启用默认值特性,这样${}拼接符才可以设置默认值 -->
<property name="org.apache.ibatis.parsing.PropertyParser.enable-default-value" value="true"/>
</properties>
<!-- 2.全局配置参数 -->
<settings>
<!-- 指定 MyBatis 所用日志的具体实现,未指定时将自动查找 -->
<setting name="logImpl" value="STDOUT_LOGGING"/>
<!-- 开启自动驼峰命名规则(camel case)映射 -->
<setting name="mapUnderscoreToCamelCase" value="true"/>
<!-- 开启延迟加载开关 -->
<setting name="lazyLoadingEnabled" value="true"/>
<!-- 将积极加载改为消极加载(即按需加载),默认值就是false -->
<setting name="aggressiveLazyLoading" value="false"/>
<!-- 打开全局缓存开关(二级环境),默认值就是true -->
<setting name="cacheEnabled" value="true"/>
</settings>
<!-- 3.别名设置 -->
<typeAliases>
<typeAlias alias="user" type="com.pjb.mybatis.po.User"/>
<typeAlias alias="teacher" type="com.pjb.mybatis.po.Teacher"/>
<typeAlias alias="integer" type="java.lang.Integer"/>
</typeAliases>
<!-- 4.类型转换器 -->
<typeHandlers>
<!-- 一个简单的类型转换器 -->
<typeHandler handler="com.pjb.mybatis.example.ExampleTypeHandler"/>
</typeHandlers>
<!-- 5.对象工厂 -->
<objectFactory type="com.pjb.mybatis.example.ExampleObjecFactory">
<!-- 对象工厂注入参数 -->
<property name="someProperty" value="100"/>
</objectFactory>
<!-- 6.插件 -->
<plugins>
<plugin interceptor="com.pjb.mybatis.example.ExamplePlugin">
<property name="someProperty" value="100"/>
</plugin>
</plugins>
<!-- 7.environments数据库环境配置 -->
<!-- 和Spring整合后environments配置将被废除 -->
<environments default="development">
<environment id="development">
<!-- 使用JDBC事务管理 -->
<transactionManager type="JDBC"/>
<!-- 数据库连接池 -->
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username:root}"/>
<property name="password" value="${jdbc.password:123456}"/>
</dataSource>
</environment>
</environments>
<!-- 8.加载映射文件 -->
<mappers>
<mapper resource="com.pjb.mybatis.sqlmap.UserMapper.xml"/>
<mapper resource="com.pjb.mybatis.sqlmap.OtherMapper.xml"/>
</mappers>
</configuration>
特别注意:
MyBatis中的配置,不但有类型限制,还有顺序限制。
必须按照:<properties>、<settings>、<typeAliases>、<typeHandlers>、…顺序排放。
2、SQL映射配置文件样例
【示例】创建名为UserMapper.xml的SQL映射配置文件,实现用户信息的查询、新增、修改、删除操作的SQL语句配置。
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="test">
<!-- 用户信息ResultMap -->
<resultMap id="userResultMap" type="com.pjb.mybatis.po.User">
<id column="id" property="id"/>
<result column="user_name" property="userName"/>
<result column="blog_url" property="blogUrl"/>
<result column="remark" property="remark"/>
<result column="create_time" property="createTime"/>
</resultMap>
<!-- 根据用户编号,查询单个用户实体 -->
<select id="queryfindUserById" parameterType="int" resultMap="userResultMap">
SELECT * FROM tb_user WHERE id = #{id}
</select>
<!-- 根据用户名称,模糊查询用户列表 -->
<select id="findUserByUserName" parameterType="java.lang.String" resultType="com.pjb.mybatis.po.User">
SELECT * FROM tb_user WHERE user_name LIKE '%${value}%'
</select>
<!-- 新增用户 -->
<insert id="insertUser" parameterType="com.pjb.mybatis.po.User">
INSERT INTO tb_user(user_name,blog_url,remark,create_time)
VALUES(#{userName},#{blogUrl},#{remark},
#{createTime,typeHandler=com.pjb.mybatis.handler.DateStrTypeHandler});
</insert>
<!-- 修改用户 -->
<update id="updateUser" parameterType="com.pjb.mybatis.po.User">
UPDATE tb_user SET user_name = #{userName} ,blog_url=#{blogUrl} ,remark=#{remark} WHERE id = #{id}
</update>
<!-- 删除用户 -->
<delete id="deleteUser" parameterType="java.lang.Integer">
DELETE FROM tb_user WHERE id = #{id}
</delete>
</mapper>
3、开启延迟加载
<!-- 开启延迟加载开关 -->
<setting name="lazyLoadingEnabled" value="true"/>
<!-- 将积极加载改为消极加载(即按需加载),默认值就是false -->
<setting name="aggressiveLazyLoading" value="false"/>
4、开启自动驼峰命名规则(camel case)映射
<!-- 开启自动驼峰命名规则(camel case)映射 -->
<setting name="mapUnderscoreToCamelCase" value="true"/>
5、保留2位小数的配置
对于一些需要保留精度的数值类型的参数,可以为其添加保留小数点位数的设置,可以添加numericScale属性,为该参数设置小数点后保留的位数(如:保留2位小数),如下:
#{price,javaType=double,jdbcType=DECIMAL,numericScale=2}