Mybatis完成自界說的typehandler三步曲。本站提示廣大學習愛好者:(Mybatis完成自界說的typehandler三步曲)文章只能為提供參考,不一定能成為您想要的結果。以下是Mybatis完成自界說的typehandler三步曲正文
第一步完成接口TypeHandler<T>
@MappedJdbcTypes(JdbcType.TIMESTAMP)//此處假如不應用該注解,在myabtis-config.xml中注冊該typehandler的時刻須要寫明jdbctype="TIMESTAMP" @MappedTypes(DateTime.class)//此處假如不應用該注解,在myabtis-config.xml中注冊該typehandler的時刻須要寫明javatype="com.sinosoft.sysframework.common.datatype.DateTime" public class DateTimeHandler implements TypeHandler<DateTime> {
第二步注冊typehandler
注冊方法有兩種
一種是單個注冊
<typeHandlers> <typeHandler handler="com.***.DateaTimeTypeHandler" javaType="[Ljava.lang.String;" jdbcType="VARCHAR"/> </typeHandlers>
一種是批量注冊
<mappers> <mapper resource="com/tiantian/mybatis/mapper/UserMapper.xml"/> <package name="com.tiantian.mybatis.mapperinterface"/> </mappers>
假如應用第二種注冊方法,jdbctype和javatype的聲明只能經由過程注解的方法界說
第三步:應用:
1、查詢成果集字段界說
<resultMap id="UserResult" type="User"> <id column="id" property="id"/> <result column="interests" property="interests" javaType="[Ljava.lang.String;" jdbcType="VARCHAR"/> </resultMap>
或許
<resultMap id="UserResult" type="User"> <id column="id" property="id"/> <result column="interests" property="interests" typeHandler="com.tiantian.mybatis.handler.StringArrayTypeHandler" /> </resultMap>
即假如直接指清楚明了typehandler類可以不消寫javatype和jdbctype,即便寫了mybatis也不消
2、傳參數查詢或許修正
<if test="txLogStatus != null"> txLogStatus = #{txLogStatus, typeHandler=com.rrcp.util.typehandlers.EventStatusTypeHandler}, </if>
同理此處的typehandler也能夠換成jdbcType和javaType
總結:
注冊的時刻和應用的時刻盡可能堅持分歧或許都寫完全,假如不同一,會找不到響應的typehandler從而報錯,我們的目標是要准確應用typehandler的處置機制,其實不想深究mybatis在注冊和查找應用的算法,所以只需勝利便可。有時光閒的蛋疼的哥們可以研討下,少注冊一個屬性,會發生甚麼效果,不外假如你研討透了,說不定myabtis的下個版本就改了。
以上所述是小編給年夜家引見的Mybatis完成自界說的typehandler三步曲,願望對年夜家有所贊助,假如年夜家有任何疑問請給我留言,小編會實時答復年夜家的。在此也異常感激年夜家對網站的支撐!