配置信息的优化,类型转换器
1.
優(yōu)化:
可以將配置信息單獨(dú)放入db.properties中,然后再動(dòng)態(tài)引入
db.properties:k=v
<configuration>
? ? <properties resource="db.properties"/>
引入之后,使用${key}
2.
MyBatis全局參數(shù)
在<configuration>里面添加<settings>標(biāo)簽,里面寫setting標(biāo)簽,key-value形式
3.別名
a. 設(shè)置單個(gè)別名
<!-- 設(shè)置別名 -->
<typeAliases>
<!-- 單個(gè) -->
<typeAlias type="org.entity.user" alias="user">
</typeAliases>
b. 批量設(shè)置別名
<!-- 設(shè)置別名 -->
<typeAliases>
<!-- 批量,以下會(huì)自動(dòng)為該包中所有類批量定義別名,別名就是類名 -->
<package name="org.entity"/>
</typeAliases>
除了自定義別名外,MyBatis還內(nèi)置了一些常見類的別名
4.類型處理器(類型轉(zhuǎn)換器)
1.MyBatis自帶一些常見的類型處理器
int-number
2.自定義MyBatis類型處理器
Java--數(shù)據(jù)庫(jdbc類型)
示例:
實(shí)體類Student:boolean stuSex? ?true:男? false:女
表student: number? stuSex? ?1:男? ?0:女
自定義類型轉(zhuǎn)換器(boolean--number)步驟:
1.創(chuàng)建轉(zhuǎn)換器:需要實(shí)現(xiàn)TypeHandle接口
通過閱讀源碼發(fā)現(xiàn)此接口有一個(gè)實(shí)現(xiàn)類BaseTypeHandler
因此要實(shí)現(xiàn)轉(zhuǎn)換器有兩種選擇:
a. 實(shí)現(xiàn)接口TypeHandler接口? ?b.繼承Base TypeHandler
2.配置 在conf.xml
需要注意的問題:設(shè)置Integer時(shí)需要寫INTEGER,純大寫
<delete id="deleteUserByUsername" parameterType="String">
?? ??? ?delete from user where usename=#{usename}
?? ?</delete>
?? ?
?? ?<!-- 如果類中屬性和表中字段可以合理識(shí)別(eg:String-varchar2),則可以使用resultType,否則使用resultMap -->
?? ?<!-- 如果類中屬性名和表中字段名可以合理識(shí)別(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可以實(shí)現(xiàn)的功能:類型轉(zhuǎn)換,屬性--字段的映射關(guān)系
總結(jié)
以上是生活随笔為你收集整理的配置信息的优化,类型转换器的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机操作系统——经典进程的同步问题
- 下一篇: SVM支持向量机-手写笔记(超详细:拉格