`

TypeHandler的实例...

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

1.类型控制类

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);  
    }  
  
}  


2.配置文件中添加类型控制器配置

<!-- 类型处理器 -->  
<typeHandlers>  
    <typeHandler javaType="String" jdbcType="VARCHAR"   
        handler="com.chl.mybatis.typehandler.StringVarcharTypeHandler"/>  
</typeHandlers> 


3.映射文件中添加类型说明

<select id="selectUsers" resultMap="userMap">  
    select username, sex from t_user;  
</select>  
  
<insert id="insertUser" parameterType="User">  
    insert into t_user (username, sex)   
    values   
    (#{userName, javaType=String, jdbcType=VARCHAR},  
    #{sex, 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="sex" column="sex" javaType="String" jdbcType="VARCHAR"></result>  
</resultMap>  


好了,到此就配置完毕了。。。
分享到:
评论

相关推荐

    android文件上传fttp的各种操作代码实例.pdf

    ftp.setFileType(FTP.BINARY_FILE_TYPE); return ftp; } } else { return null; } } catch (IOException e) { return null; } return null; } ``` 这个方法包含了连接服务器、登录、配置FTP客户端和检查...

    MyBatis自定义typeHandler的完整实例

    MyBatis自定义typeHandler的完整实例 MyBatis是一个基于Java的持久层框架,提供了强大的数据持久化功能,而TypeHandler是MyBatis中一个非常重要的组件,负责将Java类型转换为数据库类型,反之亦然。在实际开发中,...

    javawebserviceaxis2简单开发实例.pdf

    &lt;handler name="Authenticate" type="java:org.apache.axis.handlers.SimpleAuthenticationHandler"/&gt; &lt;!-- ... --&gt; ``` 4. **配置服务端点** 在`server-config.xml`中,你可以定义服务的端点地址,以及任何...

    java webservice axis2简单开发实例.docx

    &lt;handler name="Authenticate" type="java:org.apache.axis.handlers.SimpleAuthenticationHandler"/&gt; &lt;!-- 定义服务 --&gt; &lt;parameter name="className" value="com.HelloServer"/&gt; ...

    swfupload实例]SWFUpload_java实例.doc

    ### SWFUpload与Java实例详解 #### SWFUpload概述 SWFUpload是一个强大的Flash和JavaScript组件,用于实现浏览器上的多文件无刷新上传功能。通过利用Flash技术,它能够跨浏览器和平台提供一致的用户体验,同时提供...

    Typehandler mybatis

    8. **TypeHandler 的应用实例** 假设有一个枚举类型 `StatusEnum`,我们需要将其映射到数据库中的 INT 字段,可以创建一个 `StatusTypeEnumHandler` 类实现 TypeHandler,并在配置文件中注册。在 SQL 查询中,...

    javascript自动切换焦点控制效果完整实例.docx

    element["on" + type] = handler; } }, removeHandler: function(element, type, handler) { if (element.removeEventListener) { element.removeEventListener(type, handler, false); } else if (element....

    利用handler生成静态页面的完整解决方案_aspx开发教程.rar

    如果Handler不涉及任何状态,那么返回`true`以允许服务器复用Handler实例,提高性能。 `ProcessRequest`方法是核心,它会处理实际的HTTP请求。在这个方法里,我们将读取动态内容,生成HTML,并将其写入到Response...

    C#版本EventBus事件总线实例源码.rar.rar

    private readonly Dictionary&lt;Type, List&lt;IEventHandler&gt;&gt; _handlers = new Dictionary&lt;Type, List&lt;IEventHandler&gt;&gt;(); public void Subscribe(IEventHandler&lt;T&gt; handler) where T : Event { if (!_handlers....

    Eclipse RCP Plugin 开发自学入门指南(CEC首发)

    3.4.1 Command+Handler+Binding 绑定 ...................................................................................... 31 3.4.2 Action+Command+Binding绑定 .............................................

    javax.xml.rpc相关jar包

    4. 创建服务代理:在客户端,使用`ServiceFactory`创建服务代理实例,然后通过代理调用服务的方法。 总的来说,`javax.xml.rpc`是Java Web服务开发的重要组成部分,它简化了客户端和服务端之间的交互,使得开发者...

    java调用net开发的webservice实例

    java调用net开发的webservice实例下载 问题终于解决了,之前加上?wsdl的时候报如下错: - I/O exception (java.net.ConnectException) caught when processing request: Connection timed out: connect - Retrying ...

    C#版本EventBus事件总线实例源码.rar

    _eventHandlers[eventType].Remove(handler); } public static void Publish(object sender, T args) where T : EventArgs { var eventType = typeof(T); if (_eventHandlers.ContainsKey(eventType)) { ...

    java_webservice_axis2简单开发实例借鉴.pdf

    &lt;handler name="Authenticate" type="java:org.apache.axis.handlers.SimpleAuthenticationHandler"/&gt; ``` 在配置文件中,可以设置各种参数以控制Web Service的行为,如启用或禁用某些特性,指定处理程序等。 5....

    Java设计模式责任链模式共7页.pdf.zip

    处理类的实例将成为链上的节点。 ```java public abstract class Handler { protected Handler successor; public void setSuccessor(Handler successor) { this.successor = successor; } public ...

    设计模式的责任链模式的例子

    public void setNextHandler(Handler handler) { this.nextHandler = handler; } public abstract void handleRequest(Request request); } ``` 2. 接下来,创建具体处理者类(ConcreteHandler),每个类实现 ...

    Openlayer 简单实例11

    handlerOptions: {type: OpenLayers.Handler.Polygon} } ); measureControl.events.on({ 'measure': function(event) { alert(event.text); } }); map.addControl(measureControl); measureControl.activate();...

    【JavaScript源代码】Vue模仿ElementUI的form表单实例代码.docx

    ### Vue模仿ElementUI的form表单实例代码解析 #### 一、概述 本文将详细介绍一个模仿ElementUI的Vue表单实现方案,该方案通过构建四层结构:`index`组件、`Form`表单组件、`FormItem`表单项组件、`Input`与`...

Global site tag (gtag.js) - Google Analytics