javaType字符数组与jdbcType字符串转换(mybatis)

1.TypeHandler

写一个类来实现该mybatis中自定义转换器

/**
 * javaType与jdbcType类型的转换器
 * @author jiandandia
 *
 */
@MappedTypes({String[].class})
@MappedJdbcTypes({JdbcType.VARCHAR})
public class StringArrayTypeHandler implements TypeHandler {  
  
    public String[] getResult(ResultSet rs, String columnName)  
                  throws SQLException {  
           String columnValue = rs.getString(columnName);  
           return this.getStringArray(columnValue);  
    }  

    public String[] getResult(ResultSet rs, int columnIndex)  
                  throws SQLException {  
           String columnValue = rs.getString(columnIndex);  
           return this.getStringArray(columnValue);  
    }  


    public String[] getResult(CallableStatement cs, int columnIndex)  
                  throws SQLException {  
 
           String columnValue = cs.getString(columnIndex);  
           return this.getStringArray(columnValue);  
    }  

    public void setParameter(PreparedStatement ps, int i, String[] parameter,  
                  JdbcType jdbcType) throws SQLException {  
           if (parameter == null)  
                  ps.setNull(i, Types.VARCHAR);  
           else {  
                  StringBuffer result = new StringBuffer();  
                  for (String value : parameter)  
                         result.append(value).append(",");  
                  result.deleteCharAt(result.length()-1);  
                  ps.setString(i, result.toString());  
           }  
    }  


    private String[] getStringArray(String columnValue) {  
           if (columnValue == null)  
                  return null;  
           return columnValue.split(",");  
    }  


}  


2.mybatsi配置文件

         PUBLIC "-//ibatis.apache.org//DTD Config 3.0//EN" 
                  "http://ibatis.apache.org/dtd/ibatis-3-config.dtd">

 
   
         
   
 

 
     






value="oracle.jdbc.driver.OracleDriver" />
value="jdbc:oracle:thin:@localhost:8080:ORCL"/>











 


3.sql映射文件

 
 "http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd">



insert into log_record
(code_id,file_code,file_name,
file_text,error,status,create_time)
values
(s_code_id.nextval,#{file_code},#{file_name},#{file_text, javaType=[Ljava.lang.String;, jdbcType=VARCHAR},
#{error},#{status},sysdate)


你可能感兴趣的:(javaType字符数组与jdbcType字符串转换(mybatis))