Typehandler是什么
Typehandler是作为在表字段映射过程中的Converter处理器。
数据库String到Java模型Boolean对象的转换实现
BooleanTypeHandler.java
package com.freud.test.handler;
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;
public class BooleanTypeHandler implements TypeHandler {
@Override
public Boolean getResult(CallableStatement cstat, int index)
throws SQLException {
String str = cstat.getString(index);
try {
Boolean ret = Boolean.valueOf(str);
return ret;
} catch (IllegalArgumentException e) {
return null;
}
}
@Override
public Boolean getResult(ResultSet rs, String columnName)
throws SQLException {
String str = rs.getString(columnName);
try {
Boolean ret = Boolean.valueOf(str);
return ret;
} catch (IllegalArgumentException e) {
return null;
}
}
@Override
public void setParameter(PreparedStatement pstmt, int index, Object value,
JdbcType jdbcType) throws SQLException {
Boolean boolValue = (Boolean) value;
pstmt.setBoolean(index, boolValue);
}
}
实现org.apache.ibatis.type.TypeHandler接口,并实现其中的三个Abstract方法,两个Get方法指的是从数据库流中取出数据,一个set指的是将数据设置进数据库操作流。
mapper.xml
<resultMap id="user"
type="com.freud.test.beans.User">
<id property="id" jdbcType="INTEGER" column="ID" />
<result property="isEmployed" jdbcType="VARCHAR" column="IS_EMPLOYED" typeHandler="com.freud.test.handler.BooleanTypeHandler"/>
</resultMap>
User.java
package com.freud.test.beans;
public class User {
private int id;
private Boolean isEmployed;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public Boolean getIsEmployed() {
return isEmployed;
}
public void setIsEmployed(Boolean isEmployed) {
this.isEmployed = isEmployed;
}
}