mybatis的学习和使用--TypeHandler的使用--使用自定义的handler(5)
在 mybatis的学习和使用--TypeHandler的使用(4) 中讲解了如何使用mybtais提供的TypeHandler,现在讲解下如何定义我们自己的TypeHandler。实现java.util.Date
和varchar的unix时间戳的转换。
代码示例: https://github.com/wangjiuong/MybatisDemo/tree/master/MyBatisDateTypeHandler
建表语句:
SET FOREIGN_KEY_CHECKS=0; -- ---------------------------- -- Table structure for `t_user_typehandler` -- ---------------------------- DROP TABLE IF EXISTS `t_user_typehandler`; CREATE TABLE `t_user_typehandler` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(255) DEFAULT NULL, `password` varchar(255) DEFAULT NULL, `regTime` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=23 DEFAULT CHARSET=utf8;
要实现自定义的handler,必须实现接口类BaseTypeHandler,并且实现其中的方法。
package com.wang.MyBatis.typeHandler; import java.sql.CallableStatement; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.Date; import org.apache.ibatis.type.BaseTypeHandler; import org.apache.ibatis.type.JdbcType; import org.apache.ibatis.type.MappedJdbcTypes; import org.apache.ibatis.type.MappedTypes; @MappedJdbcTypes({ JdbcType.VARCHAR }) @MappedTypes({ Date.class }) public class MyDateTypeHandler extends BaseTypeHandler<Date> { public void setNonNullParameter(PreparedStatement preparedStatement, int i, Date date, JdbcType jdbcType) throws SQLException { System.out.println("setNonNullParameter 1"); preparedStatement.setString(i, String.valueOf(date.getTime())); System.out.println(preparedStatement); } public Date getNullableResult(ResultSet resultSet, String s) throws SQLException { System.out.println("setNonNullParameter 2"); return new Date(resultSet.getLong(s)); } public Date getNullableResult(ResultSet resultSet, int i) throws SQLException { System.out.println("setNonNullParameter 3"); return new Date(resultSet.getLong(i)); } public Date getNullableResult(CallableStatement callableStatement, int i) throws SQLException { System.out.println("setNonNullParameter 4"); return callableStatement.getDate(i); } }
setNonNullParameter函数实现了存储转换。
getNullableResult实现了将数据从数据中读取时进行的转换。
其他的使用按照上一篇文章 mybatis的学习和使用--TypeHandler的使用(4) 进行操作就可以了。