• 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'

  • 相关阅读:
    Python基础课:多继承
    Python基础课:定义一个函数,输入一个序列,判断序列是顺序还是逆序,顺序输出UP,逆序输出DOWN,否则输出None
    Python基础课:测试type 和 isinstance 那个的速度更快
    Python基础课:定义一个函数,可以对序列逆序的输出(对于列表和元组可以不用考虑嵌套的情况)
    WEBAPI获取数据
    jQuery中的.height()、.innerHeight()和.outerHeight()
    Javascript基类对象原型中有数组的情况
    必须关注的25位知名JavaScript开发者
    jQuery中的事件绑定函数.bind()、.live()、on()和.delegate()
    Javascript全局变量和delete
  • 原文地址:https://www.cnblogs.com/law-luffy/p/5533832.html
Copyright © 2020-2023  润新知