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

  • 相关阅读:
    windows程序设计第4章Text Output练习(831121)
    约瑟夫问题的递归公式
    哈希(hash)以及C++标准库哈希(std::hash)
    返回顶部的一段代码
    对于使用 UNIKON ALL 中表的顺序
    正则表达式的实际运用
    json.help
    省市区联动
    一个JS时间选择控件
    (转)C# Enum,Int,String的互相转换 枚举转换
  • 原文地址:https://www.cnblogs.com/law-luffy/p/5533832.html
Copyright © 2020-2023  润新知