`
cnflat
  • 浏览: 13613 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Mybatis学习笔记5--typehandler

阅读更多
可以自定义一些TypeHandler来对一些字段进行特殊处理,例如将一个varchar字段转成一个JAVABean中的String数组。将JavaBean中的long转成Timestamp等。

需要注意的:
1. JavaBean中的成员类型只能是类,如果是基本类型的要改成对应的包装类。
2. 配置文件中,如果是insert、update类型的语句,需要在字段中定义类型或者typehandler。查询的结果如果是定义了ResultMap,可以在对应的列定义中定义typehandler。
3. TypeHandler对应的类型可以在xml中定义,也可以在代码中通过注解@MappedTypes和@MappedJdbcTypes来定义

一个Long和Timestamp互转的例子:
@MappedTypes(Long.class)
@MappedJdbcTypes(JdbcType.TIMESTAMP)
public class TimestampTypeHandler extends BaseTypeHandler<Long>{

	@Override
	public Long getNullableResult(ResultSet rs, String columnName)
			throws SQLException {
		Timestamp value = rs.getTimestamp(columnName);
		if(value != null)
			return value.getTime();
		return 0l;
	}

	@Override
	public Long getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
		Timestamp value = rs.getTimestamp(columnIndex);
		if(value != null)
			return value.getTime();
		return 0l;
	}

	@Override
	public Long getNullableResult(CallableStatement stmt, int parameterIndex)
			throws SQLException {
		Timestamp value = stmt.getTimestamp(parameterIndex);
		if(value != null)
			return value.getTime();
		return 0l;
	}

	@Override
	public void setNonNullParameter(PreparedStatement stmt, int parameterIndex,
			Long value, JdbcType jdbcType) throws SQLException {
		stmt.setTimestamp(parameterIndex, new Timestamp(value));
	}

}


配置文件例子:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC 
    "-//mybatis.org//DTD Mapper 3.0//EN"
    "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
	<!--这块等于dao接口的实现  namespace必须和接口的类路径一样-->
	<mapper namespace="example.dao.IVerifyCodeDAO">
	<resultMap type="VerifyCode" id="verifycodeMap">
		<result column="phone" property="phonenum" />
		<result property ="code" column="code" />
		<result property="timestamp" column="timestamp" typeHandler="example.dao.typehandler.TimestampTypeHandler" />
	</resultMap>

     <insert id="insertVerifyCode1" parameterType="VerifyCode">
     	insert into T_VerifyCode 
     		(phone,code,timestamp)
     		values(#{phonenum},#{code},#{timestamp,typeHandler=example.dao.typehandler.TimestampTypeHandler})
     </insert>
     
     <insert id="insertVerifyCode" parameterType="VerifyCode">
     	insert into T_VerifyCode 
     		(phone,code,timestamp)
     		values(#{phonenum},#{code},#{timestamp,jdbcType=TIMESTAMP,javaType=java.lang.Long})
     </insert>
     
     <delete id="removeVerifyCode" parameterType="HashMap">
     	delete from T_VerifyCode where phone=#{phone}
     </delete>
     
     <select id="loadValidCodes" resultMap="verifycodeMap">
     	select phone,code,timestamp from T_VerifyCode
     </select>
</mapper>
分享到:
评论

相关推荐

    mybatis-plus-boot-starter-3.5.1-API文档-中文版.zip

    赠送jar包:mybatis-plus-boot-starter-3.5.1.jar; 赠送原API文档:mybatis-plus-boot-starter-3.5.1-javadoc.jar; 赠送源代码:mybatis-plus-boot-starter-3.5.1-sources.jar; 赠送Maven依赖信息文件:mybatis-...

    mybatis-plus-extension-3.5.1-API文档-中英对照版.zip

    赠送jar包:mybatis-plus-extension-3.5.1.jar; 赠送原API文档:mybatis-plus-extension-3.5.1-javadoc.jar; 赠送源代码:mybatis-plus-extension-3.5.1-sources.jar; 赠送Maven依赖信息文件:mybatis-plus-...

    MyBatis-Plus 的官方示例(mybatis-plus-samples-master.zip)

    本工程为 MyBatis-Plus 的官方示例,项目结构如下: mybatis-plus-sample-quickstart: 快速开始示例 mybatis-plus-sample-quickstart-springmvc: 快速开始示例(Spring MVC版本) mybatis-plus-sample-reduce-...

    mybatis-spring-2.0.6-API文档-中文版.zip

    赠送jar包:mybatis-spring-2.0.6.jar; 赠送原API文档:mybatis-spring-2.0.6-javadoc.jar; 赠送源代码:mybatis-spring-2.0.6-sources.jar; 赠送Maven依赖信息文件:mybatis-spring-2.0.6.pom; 包含翻译后的API...

    mybatis-spring-boot-autoconfigure-1.3.2-API文档-中英对照版.zip

    赠送jar包:mybatis-spring-boot-autoconfigure-1.3.2.jar; 赠送原API文档:mybatis-spring-boot-autoconfigure-1.3.2-javadoc.jar; 赠送源代码:mybatis-spring-boot-autoconfigure-1.3.2-sources.jar; 赠送...

    mybatis-spring-2.0.0-API文档-中文版.zip

    赠送jar包:mybatis-spring-2.0.0.jar; 赠送原API文档:mybatis-spring-2.0.0-javadoc.jar; 赠送源代码:mybatis-spring-2.0.0-sources.jar; 赠送Maven依赖信息文件:mybatis-spring-2.0.0.pom; 包含翻译后的API...

    mybatis-plus-boot-starter-3.1.0-API文档-中文版.zip

    赠送jar包:mybatis-plus-boot-starter-3.1.0.jar; 赠送原API文档:mybatis-plus-boot-starter-3.1.0-javadoc.jar; 赠送源代码:mybatis-plus-boot-starter-3.1.0-sources.jar; 赠送Maven依赖信息文件:mybatis-...

    mybatis-spring-boot-starter-2.0.0.jar

    mybatis mybatis-spring-boot-starter-2.0.0.jar下载

    mybatis-plus-boot-starter-3.4.3.3.jar

    mybatis-plus-boot-starter.jar 各个版本下载, SpringBoot 集成 MybatisPlus jar 包下载, Mybatis-Plus(简称MP)是一个基于MyBatis的增强工具库,它简化了与数据库的交互操作并提供了一系列增强功能,使开发者...

    mybatis-generator-core-1.3.7-API文档-中文版.zip

    赠送jar包:mybatis-generator-core-1.3.7.jar; 赠送原API文档:mybatis-generator-core-1.3.7-javadoc.jar; 赠送源代码:mybatis-generator-core-1.3.7-sources.jar; 赠送Maven依赖信息文件:mybatis-generator-...

    mybatis-spring-boot-starter-2.1.3.jar

    mybatis-spring-boot-starter-2.1.3.jarmybatis-spring-boot-starter-2.1.3.jarmybatis-spring-boot-starter-2.1.3.jar

    mybatis-spring-boot-starter-2.1.4.jar

    mybatis-spring-boot-starter-2.1.4.jarmybatis-spring-boot-starter-2.1.4.jar

    mybatis-plus-annotation-3.5.1-API文档-中文版.zip

    赠送jar包:mybatis-plus-annotation-3.5.1.jar; 赠送原API文档:mybatis-plus-annotation-3.5.1-javadoc.jar; 赠送源代码:mybatis-plus-annotation-3.5.1-sources.jar; 赠送Maven依赖信息文件:mybatis-plus-...

    mybatis-plus-boot-starter-3.1.0.jar

    mybatis-plus-boot-starter.jar 各个版本下载, SpringBoot 集成 MybatisPlus jar 包下载, Mybatis-Plus(简称MP)是一个基于MyBatis的增强工具库,它简化了与数据库的交互操作并提供了一系列增强功能,使开发者...

    mybatis-plus-boot-starter-3.5.3.2.jar

    mybatis-plus-boot-starter.jar 各个版本下载, SpringBoot 集成 MybatisPlus jar 包下载, Mybatis-Plus(简称MP)是一个基于MyBatis的增强工具库,它简化了与数据库的交互操作并提供了一系列增强功能,使开发者...

    mybatis-3-config.dtd mybatis-3-mapper.dtd

    在MyBatis中,`mybatis-3-config.dtd` 和 `mybatis-3-mapper.dtd` 是两个至关重要的DTD(Document Type Definition)文件,它们定义了MyBatis配置文件和映射文件的结构和规则。 首先,让我们深入了解一下`mybatis-3...

    mybatis-generator-config_1_0.dtd

    mybatis-generator-config_1_0.dtd文件存在于mybatis-generator-core-1.3.2.jar包中,路径如下org/mybatis/generator/config/xml/mybatis-generator-config_1_0.dtd 可以设置开发工具的dtd配置,配置...

    mybatis-spring-boot-autoconfigure-2.1.3.jar_idea安装maven插件

    mybatis-spring-boot-autoconfigure-2.1.3mybatis-spring-boot-autoconfigure-2.1.3

    mybatis框架学习笔记--快速入门

    内容概要:mybatis学习笔记,适合刚接触mybatis的人能让你快速入门。 适用人群:大学生或者初基础mybatis的人 使用场景及目标:idea集成mybatis,简化jdbc

    mybatis-plus-boot-starter-3.5.1-API文档-中英对照版.zip

    赠送jar包:mybatis-plus-boot-starter-3.5.1.jar; 赠送原API文档:mybatis-plus-boot-starter-3.5.1-javadoc.jar; 赠送源代码:mybatis-plus-boot-starter-3.5.1-sources.jar; 赠送Maven依赖信息文件:mybatis-...

Global site tag (gtag.js) - Google Analytics