MyBatis自定义数据类型转换器
实现方式实现TypeHandler接口或 继承BaseTypeHandler类。
本案例以实现TypeHandler接口。
自定义数据类型转换器对参数进行处理。
1、自定义数据类型转换器
public class MyIntegerTypeHandle implements TypeHandler<Integer> {
@Override
public void setParameter(PreparedStatement ps, int i, Integer parameter, JdbcType jdbcType) throws SQLException {
System.out.println("参数自定义类型转换器1111111 参数进行了处理......");
parameter = parameter + 1;
ps.setInt(i,parameter); //处理后的参数
}
@Override
public Integer getResult(ResultSet rs, String columnName) throws SQLException {
return null;
}
@Override
public Integer getResult(ResultSet rs, int columnIndex) throws SQLException {
return null;
}
@Override
public Integer getResult(CallableStatement cs, int columnIndex) throws SQLException {
return null;
}
}
2、注册类型转换器(mybatis-config.xml)
<typeHandlers>
<typeHandler handler="com.myTypeHandle.MyIntegerTypeHandle"></typeHandler>
</typeHandlers>
3、使用自定义的数据类型转换器
<select id="getAll" parameterType="int" resultMap="userResultMapper">
select * from users where id = #{id,typeHandler=com.myTypeHandle.MyIntegerTypeHandle}
</select>
自定义数据类型转换器对 查询结果 进行处理。
1、实现数据类型转换器
```python
public class xxxTypeHandle implements TypeHandler<String> {
@Override
public void setParameter(PreparedStatement ps, int i, String parameter, JdbcType jdbcType) throws SQLException {
parameter = parameter + 1;
}
@Override
public String getResult(ResultSet rs, String columnName) throws SQLException {
//处理结果集
System.out.println(rs.getString(columnName) + "---------------自定义数据类型转换器111--------------");
return rs.getString(columnName) + "------";
}
@Override
public String getResult(ResultSet rs, int columnIndex) throws SQLException {
//处理结果集
System.out.println(rs.getInt(columnIndex) + "---------------自定义数据类型转换器2222--------------");
return null;
}
@Override
public String getResult(CallableStatement cs, int columnIndex) throws SQLException {
//处理结果集
System.out.println("CallableStatement CallableStatement");
return null;
}
}
2、注册类型转换器
<typeHandlers>
<typeHandler handler="com.myTypeHandle.xxxTypeHandle"></typeHandler>
</typeHandler>
</typeHandlers>
3、查询结果使用转换器
<resultMap id="userResultMapper" type="com.entity.User">
<id column="id" property="id"/>
<result column="username" property="username" typeHandler="com.myTypeHandle.xxxTypeHandle" ></result>
</resultMap>
<select id="getAll" parameterType="int" resultType="com.entity.User">
select id,username from users where id = #{id,typeHandler=com.myTypeHandle.MyIntegerTypeHandle}
</select>