zoukankan      html  css  js  c++  java
  • mybatis类型转换

    写一个转换类继承TypeHandler<T>:

    package com.hotent.officeoa.model;
    
    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;
    import org.apache.log4j.Logger;
    
    /** 
     * @ClassName MyBooleanTypeHandler
     * @PackageName com.hotent.officeoa.model
     * @Description 将Java中的Boolean和jdbc的char之间转换,Y-true,N-false
     * @author law
     * @Date 2016-4-5 上午8:43:32
     */
    public class MyBooleanTypeHandler implements TypeHandler<Boolean> {
        
        private static final Logger logger = Logger.getLogger(MyBooleanTypeHandler.class);
        
         /** 
         * 用于在Mybatis获取数据结果集时如何把数据库类型转换为对应的Java类型 
         * @param resultSet 当前的结果集 
         * @param columnName 当前的字段名称 
         * @return 转换后的Java对象 
         * @throws SQLException 
         */  
        @Override
        public Boolean getResult(ResultSet resultSet, String columnName) throws SQLException {
            
            return tranferType(resultSet.getString(columnName));
        }
    
         /** 
         * 用于在Mybatis通过字段位置获取字段数据时把数据库类型转换为对应的Java类型 
         * @param resultSet 当前的结果集 
         * @param arg1 当前字段的位置 
         * @return 转换后的Java对象 
         * @throws SQLException 
         */  
        @Override
        public Boolean getResult(ResultSet resultSet, int arg1) throws SQLException {
            return tranferType(resultSet.getString(arg1));
        }
    
         /** 
         * 用于Mybatis在调用存储过程后把数据库类型的数据转换为对应的Java类型 
         * @param callableStatement 当前的CallableStatement执行后的CallableStatement 
         * @param columnIndex 当前输出参数的位置 
         * @return 
         * @throws SQLException 
         */  
        @Override
        public Boolean getResult(CallableStatement callableStatement, int columnIndex)
                throws SQLException {
            return tranferType(callableStatement.getString(columnIndex));
        }
    
        /** 
         * 用于定义在Mybatis设置参数时该如何把Java类型的参数转换为对应的数据库类型 
         * @param preparedStatement 当前的PreparedStatement对象 
         * @param arg1 当前参数的位置 
         * @param arg2 当前参数的Java对象 
         * @param jdbcType 当前参数的数据库类型 
         * @throws SQLException 
         */  
        @Override
        public void setParameter(PreparedStatement preparedStatement, int arg1, Boolean arg2,
                JdbcType jdbcType) throws SQLException {
            if(arg2.equals(Boolean.TRUE)){  
                preparedStatement.setString(arg1,"Y");  
            }else{  
                preparedStatement.setString(arg1,"N");  
            }  
        }
        
        private Boolean tranferType(String str){
            if("Y".equalsIgnoreCase(str)){
                return Boolean.TRUE;
            }else{
                return Boolean.FALSE;
            }
        }
    }

    配置:

        <typeHandlers>  
        <typeHandler javaType="Boolean" jdbcType="CHAR"  
            handler="com.hotent.officeoa.model.MyBooleanTypeHandler"/>  
        </typeHandlers> 

    现在,Boolean类型插入数据库为‘Y’or'N'

  • 相关阅读:
    vue简单的富文本实现(亲测可以)
    做手机兼容性看友盟手机统计
    压测并发数上不去的原因分析(泽嵩大佬说的)
    跨域问题解决
    jmeter压力测试报Address already in use: connect错误
    选择器(可搜索)+气泡提示组件
    2020
    Redis集群搭建采坑总结
    echarts自定义背景图片
    百度ECharts地图Json数据在线下载(geoJson)
  • 原文地址:https://www.cnblogs.com/law-luffy/p/5533832.html
Copyright © 2011-2022 走看看