zoukankan      html  css  js  c++  java
  • TypeHandler的简单实例

    转自:http://ccchhhlll1988-163-com.iteye.com/blog/1420149

    TypeHandler是MyBatis config文件中可选的配置选项,其可以对实体属性类型和数据库列类型的转换过程进行干涉,在过程中添加某些可能需要的操作。 
    1、自定义的typeHandler类需要实现typeHandler接口并且实现接口方法; 
    2、配置文件添加<typeHandler>; 
    3、在映射文件中的参数和结果添加类型说明,javaType和jdbcType。 
    简单实例如下: 
    类型控制类------ 

    package com.chl.mybatis.typehandler;
    
    import java.sql.CallableStatement;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    
    import org.apache.ibatis.type.JdbcType;
    import org.apache.ibatis.type.TypeHandler;
    
    
    /**
     * @author chl
     * 类型转换器
     * 实现TypeHandler接口
     * 需要强调的是:为了让类型控制器起作用,必须在mapper.xml中对参数和结果的类型进行显示表明。
     */
    public class StringVarcharTypeHandler implements TypeHandler{
    
        @Override
        public Object getResult(ResultSet rs, String columnName) throws SQLException {
            // TODO Auto-generated method stub
            System.out.println("getResult(rs,columnName)");
            return rs.getString(columnName);
        }
    
        @Override
        public Object getResult(CallableStatement arg0, int arg1)
                throws SQLException {
            // TODO Auto-generated method stub
            return null;
        }
    
        @Override
        public void setParameter(PreparedStatement ps, int paraIndex, Object object,
                JdbcType jt) throws SQLException {
            // TODO Auto-generated method stub
            System.out.println("setParameter()");
            ps.setString(paraIndex, (String)object);
        }
    
    }

    配置文件中:

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
    <configuration>
        <!-- 引入外部文件 -->
        <properties resource="config.properties"></properties>
        <!-- 定义vo -->
        <typeAliases>
            <typeAlias alias="User" type="com.mybatis.test.vo.User" />
        </typeAliases>
        <!-- 类型处理器 -->
        <typeHandlers>
            <typeHandler javaType="String" jdbcType="VARCHAR"
                handler="com.chl.mybatis.typehandler.StringVarcharTypeHandler" />
        </typeHandlers>
        <!-- end define -->
        <environments default="development">
            <environment id="development">
                <transactionManager type="JDBC" />
                <dataSource type="POOLED">
                    <property name="driver" value="${driver}" />
                    <property name="url" value="${url}" />
                    <property name="username" value="${username}" />
                    <property name="password" value="${password}" />
                </dataSource>
            </environment>
        </environments>
    
        <mappers>
            <mapper resource="com/mybatis/test/maps/UserMapper.xml" />
        </mappers>
    </configuration>

    这里注意该控制类的位置:
    标签的顺序大致是:

    "(properties,settings,typeAliases,typeHandlers,objectFactory,objectWrapperFactory,plugins,environments,mappers)".

    如果报类似的错误的话,就是因为标签位置放错了的原因。

    映射文件中添加类型说明:

        <insert id="insertUser2" parameterType="User">
            insert into user
            (username, password)
            values
            (#{username, javaType=String, jdbcType=VARCHAR},
            #{password, javaType=String, jdbcType=VARCHAR});
        </insert>
        <!-- 实现结果中列于对象属性的对应关系,利用javaType和jdbcType表示类型关系,这样有助于TypeHandler的匹配使用 -->
        <resultMap id="userMap" type="User">
            <result property="username" column="username" javaType="String"    jdbcType="VARCHAR"></result>
            <result property="password" column="password" javaType="String" jdbcType="VARCHAR"></result>
        </resultMap>
  • 相关阅读:
    geotrellis使用(二十八)栅格数据色彩渲染(多波段真彩色)
    我的2016,感恩、乐观、努力
    我的奋斗——从印刷工人到地理信息大数据系统程序员
    geotrellis使用(二十七)栅格数据色彩渲染
    用户画像
    栈和队列在python中的实现
    跳一跳第一天总结
    在pycharm中使用scrapy爬虫
    用户使用手册
    项目测试报告和用户使用手册
  • 原文地址:https://www.cnblogs.com/tv151579/p/3297862.html
Copyright © 2011-2022 走看看