MyBatis自定义数据映射TypeHandler
来源:互联网 发布:mac解压rar命令 编辑:程序博客网 时间:2024/06/06 17:59
在Mybatis的官方文档中说明了,框架内置的TypeHandler类型。请参见http://mybatis.github.io/mybatis-3/zh/configuration.html#typeHandlers
同时Mybatis支持自定义typeHandler。
例如:自定义了一个将Date存为毫秒时间的VARCHAR类型的TypeHandler
package demo;public class CustomTimeStampHandler extends BaseTypeHandler<Date> {@Overridepublic void setNonNullParameter(PreparedStatement ps, int i,Date parameter, JdbcType jdbcType) throws SQLException {ps.setString(i, String.valueOf(parameter.getTime()));}@Overridepublic Date getNullableResult(ResultSet rs, String columnName)throws SQLException {String sqlTimestamp = rs.getString(columnName); if (sqlTimestamp != null) { return new Date(Long.parseLong(sqlTimestamp)); } return null;}@Overridepublic Date getNullableResult(ResultSet rs, int columnIndex)throws SQLException {String sqlTimestamp = rs.getString(columnIndex); if (sqlTimestamp != null) { return new Date(Long.parseLong(sqlTimestamp)); } return null;}@Overridepublic Date getNullableResult(CallableStatement cs, int columnIndex)throws SQLException {String sqlTimestamp = cs.getString(columnIndex); if (sqlTimestamp != null) { return new Date(Long.parseLong(sqlTimestamp)); } return null;}}
在Mybatis配置中注册该TypeHandler<typeHandlers> <typeHandler handler="com.jd.jos.application.note.dao.CustomTimeStampHandler" javaType="java.util.Date" jdbcType="VARCHAR"/></typeHandlers>
然后就在映射配置文件中使用该TypeHander了。
在resultMap的定义中对对应列定义typeHandler:
<resultMap type="Note" id="note-base"> <result property="id" column="id" /> <result property="updateTime" column="update_time" jdbcType="VARCHAR" javaType="Date" typeHandler="demo.CustomTimeStampHandler"/></resultMap>
这里只能是在select的时候才会使用自定义的TypeHandler处理对应的映射关系,如果要在insert或者update时使用则需要在sql定义中添加相应的内容。如下:
<update id="updateRow" parameterType="Note"> update note set update_time=#{updateTime, javaType=Date, jdbcType=VARCHAR} where id=#{id}</update>
这样在update时,会将Date转换成毫秒时间。
在insert时,按照同样的处理方式即可。
在官方文档中看到其在update和insert的处理方式为
<update id="updateRow" parameterType="NoteBook"> update note set update_time=#{updateTime,typeHandler=demo.CustomTimeStampHandler} where id=#{id}</update>
但是我在测试时没有成功。阅读全文
0 0
- MyBatis自定义数据映射TypeHandler
- MyBatis自定义数据映射TypeHandler
- mybatis自定义typeHandler映射对象为JSON
- Mybatis自定义typehandler
- MyBatis-自定义typeHandler
- Mybatis 自定义 TypeHandler
- Mybatis自定义TypeHandler
- Mybatis中的typehandler 自定义数据转换储存读取
- mybatis typeHandler自定义类型转换器
- mybatis typeHandler自定义类型转换器
- mybatis typeHandler自定义类型转换器
- mybatis typeHandler自定义类型转换器
- mybatis学习笔记--typehandler自定义类型转换
- mybatis自定义类型转换(typeHandler)
- Mybatis实现自定义的类型转换器TypeHandler
- Mybatis实现自定义的类型转换器TypeHandler
- Mybatis实战之自定义TypeHandler处理枚举
- Mybatis实战之自定义TypeHandler处理枚举
- ES 查询tips
- 设计模式简述
- 介绍几种邻域滤波的方法
- K-近邻算法
- VMware中的Fedora9下安装VMtool后图形界面无法启动
- MyBatis自定义数据映射TypeHandler
- android VLayout 全面解析
- 微软夏令营编程测验第二题MSFT
- FastFusion安装编译
- 开关电源制作过程总结
- java jdbc之如何获得一个resultset的行数
- 局部静态变量是如何做到只初始化一次的?
- Java List性能优化
- C语言常用内置函数