1.
优化:
可以将配置信息单独放入db.properties中,然后再动态引入
db.properties:k=v
<configuration>
<properties resource="db.properties"/>
引入之后,使用${key}
2.
MyBatis全局参数
在<configuration>里面添加<settings>标签,里面写setting标签,key-value形式
3.别名
a. 设置单个别名
<!-- 设置别名 -->
<typeAliases>
<!-- 单个 -->
<typeAlias type="org.entity.user" alias="user">
</typeAliases>
b. 批量设置别名
<!-- 设置别名 -->
<typeAliases>
<!-- 批量,以下会自动为该包中所有类批量定义别名,别名就是类名 -->
<package name="org.entity"/>
</typeAliases>
除了自定义别名外,MyBatis还内置了一些常见类的别名
4.类型处理器(类型转换器)
1.MyBatis自带一些常见的类型处理器
int-number
2.自定义MyBatis类型处理器
Java--数据库(jdbc类型)
示例:
实体类Student:boolean stuSex true:男 false:女
表student: number stuSex 1:男 0:女
自定义类型转换器(boolean--number)步骤:
1.创建转换器:需要实现TypeHandle接口
通过阅读源码发现此接口有一个实现类BaseTypeHandler
因此要实现转换器有两种选择:
a. 实现接口TypeHandler接口 b.继承Base TypeHandler
2.配置 在conf.xml
需要注意的问题:设置Integer时需要写INTEGER,纯大写
<delete id="deleteUserByUsername" parameterType="String">
delete from user where usename=#{usename}
</delete>
<!-- 如果类中属性和表中字段可以合理识别(eg:String-varchar2),则可以使用resultType,否则使用resultMap -->
<!-- 如果类中属性名和表中字段名可以合理识别(eg:No->no),则可以使用resultType,否则使用resultMap -->
<select id="queryUserByUsenameWithConventer" resultMap="userResult" parameterType="String">
select * from user where usename = #{usename}
</select>
<resultMap type="user" id="userResult">
<!-- 分为主键,非主键 -->
<id property="usename" column="usename"/>
<result property="password" column="password"/>
<result property="type" column="type"/>
<result property="gender" column="gender"/>
<result property="phone" column="phone" javaType="boolean" jdbcType="INTEGER"/>
</resultMap>
resultMap可以实现的功能:类型转换,属性--字段的映射关系