本文是系列文章,目录:
一、MybatisPlus-基本使用
二、MybatisPlus-进阶使用-条件构造器
三、MybatisPlus-进阶使用-自定义sql
四、MybatisPlus-进阶使用-Service接口(1)-基本使用
五、MybatisPlus-进阶使用-Service接口(2)-自定义service
六、MybatisPlus-进阶使用-Service接口(3)- 批量新增
七、MybatisPlus-进阶使用-逻辑删除
八、MybatisPlus-进阶使用-枚举处理器
九、MybatisPlus-进阶使用-JSON类型处理器
十、MybatisPlus-进阶使用-配置文件加密
十一、MybatisPlus-插件功能-分页插件(1)
十二、MybatisPlus-插件功能-分页插件(2)-通用分页封装
十三、MybatisPlus-插件功能-乐观锁插件
十四、MybatisPlus-插件功能-sql性能分析
十五、MybatisPlus-自动填充字段
MybatisPlus-问题汇总
为什么要进行配置文件加密
我们的配置文件中,可能存在很多敏感信息,如果这些信息是明文的话,可能由于开发人员流动导致信息泄露。而MyBatis-Plus 提供了数据安全保护功能。
实现配置文件加密
需求:对数据库用户名密码进行加密
1.生成密钥并进行加密
利用AES工具生成一个随机秘钥
package com.itheima.mp;
import com.baomidou.mybatisplus.core.toolkit.AES;
import org.junit.jupiter.api.Test;
class MpDemoApplicationTests {
@Test
void contextLoads() {
// 生成 16 位随机 AES 密钥
String randomKey = AES.generateRandomKey();
System.out.println("randomKey = " + randomKey);
// 利用密钥对用户名加密
String username = AES.encrypt("root", randomKey);
System.out.println("username = " + username);
// 利用密钥对用户名加密
String password = AES.encrypt("MySQL123", randomKey);
System.out.println("password = " + password);
}
}
2.修改配置
spring:
datasource:
url: jdbc:mysql://127.0.0.1:3307/mp?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true
driver-class-name: com.mysql.cj.jdbc.Driver
username: mpw:RvXYKxUEwhGdZVVbF74PQQ== # 密文要以 mpw:开头
password: mpw:RvXYKxUEwhGdZVVbF74PQQ== # 密文要以 mpw:开头
3.测试
在启动项目的时候,需要把刚才生成的秘钥添加到启动参数中,像这样:
3.1启动参数中添加:
--mpw.key=6234633a66fb399f
3.2idea中添加
3.3测试类中添加:
单元测试的时候不能添加启动参数,所以要在测试类的注解上配置:
package com.pino.demo;
import com.pino.demo.domain.po.User;
import com.pino.demo.service.IUserService;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.List;
/**
* 配置文件加密
*/
@SpringBootTest(args = "--mpw.key=71b8fcd90e5104d1")
public class J_EnumHandle {
@Autowired
private IUserService userService;
@Test
void testDeleteLogic() {
List<User> list = userService.list();
list.forEach(System.out::println);
}
}