Handle编写
- 位置
- dao层找个类目录下AESTypeHandler.java
- 注意
- 模型中属性对应的实际数据为null时,一定要判空判断和对应方式的处理,否则
- 模型中属性对应的实际数据为null时,一定要判空判断和对应方式的处理,否则
-
核心实现
import com.sitech.mios.ecosp.fortress.util.AESUtils; import org.apache.ibatis.type.BaseTypeHandler; import org.apache.ibatis.type.JdbcType; import java.sql.CallableStatement; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class AESTypeHandler extends BaseTypeHandler<Object> { @Override public void setNonNullParameter(PreparedStatement ps, int i, Object parameter, JdbcType jdbcType) throws SQLException { if (parameter != null && !"".equals(parameter)) { ps.setString(i, AESUtils.encryptToHex((String) parameter, AESUtils.KEYWORD_BJDX)); } } @Override public Object getNullableResult(ResultSet rs, String columnName) throws SQLException { String columnValue = rs.getString(columnName); if (columnValue != null && !"".equals(columnValue)) { return new String(AESUtils.decryptHex(columnValue, AESUtils.KEYWORD_BJDX)); } else { return columnValue; } } @Override public Object getNullableResult(ResultSet rs, int columnIndex) throws SQLException { String columnValue = rs.getString(columnIndex); if (columnValue != null && !"".equals(columnValue)) { return new String(AESUtils.decryptHex(columnValue, AESUtils.KEYWORD_BJDX)); } else { return columnValue; } } @Override public String getNullableResult(CallableStatement cs, int columnIndex) throws SQLException { String columnValue = cs.getString(columnIndex); if (columnValue != null && !"".equals(columnValue)) { return new String(AESUtils.decryptHex(columnValue, AESUtils.KEYWORD_BJDX)); } else { return columnValue; } } }
- mapper中使用--实体中
<resultMap id="BaseResultMap" type="com.Order" > ... <result column="ADDRESS" property="address" jdbcType="VARCHAR" typeHandler="com.sitech.mios.ecosp.dao.handler.AESTypeHandler"/> ... </resultMap>
- mapper中使用--方法中
insert into TMALL_ORDER ( ADDRESS) values (#{address,jdbcType=VARCHAR,typeHandler=com.sitech.mios.ecosp.dao.handler.AESTypeHandler})