1、 定义TypeHandler

public class EncryptTypeHandler extends BaseTypeHandler<String> {

    private static final String KEY = "9a4601004c1111ec9444b7a8a6f90000";
    private static final AES AES = SecureUtil.aes(SecureUtil.generateKey(SymmetricAlgorithm.AES.getValue(), KEY.getBytes()).getEncoded());

    @Override
    public void setNonNullParameter(PreparedStatement ps, int i, String parameter, JdbcType jdbcType) throws SQLException {
        if (parameter == null) {
            ps.setString(i, null);
            return;
        }

        ps.setString(i, AES.encryptHex(parameter));
    }

    @Override
    public String getNullableResult(ResultSet rs, String columnName) throws SQLException {
        return AES.decryptStr(rs.getString(columnName));
    }

    @Override
    public String getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
        return AES.decryptStr(rs.getString(columnIndex));
    }

    @Override
    public String getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
        return AES.decryptStr(cs.getString(columnIndex));
    }
}

至于加解密可以自己定义,我这里使用的是hutool工具类,依赖如下

 		<dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>5.7.22</version>
        </dependency>

2、使用

@TableName(value = "sys_user", autoResultMap = true)
public class SysUser implements Serializable {

    private static final long serialVersionUID = 1L;

    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    private String userName;

    private Long groupId;

    @TableField(typeHandler = EncryptTypeHandler.class)
    private String password;

    @TableField(typeHandler = EncryptTypeHandler.class)
    private String phoneNumber;

    private LocalDateTime cTime;

    private LocalDateTime uTime;

	//省略 getter、setter方法 
}

重点
@TableField(typeHandler = EncryptTypeHandler.class)
@TableName(value = "sys_user", autoResultMap = true)

然后就可以使用mybatis-plus自带的BaseMapper进行CRUD,可以自动执行TypeHandler

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐