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) 进行操作就可以了。

 

posted @ 2017-04-09 16:50  王久勇  阅读(1483)  评论(0)    收藏  举报