# Mybatis数据字段加密插件 **Repository Path**: chenshuzhuo/mybatis-encrypt-plugins ## Basic Information - **Project Name**: Mybatis数据字段加密插件 - **Description**: 支持Mybatis数据字段加密新增、更新、查询的插件 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 9 - **Created**: 2022-08-23 - **Last Updated**: 2022-08-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Mybatis数据字段加密插件 #### 介绍 支持Mybatis数据字段加密新增、更新、查询的插件 #### 软件架构 该项目依赖Mybatis-Plus、JSqlParse的技术框架,基于ShardingJDBC数据脱敏的方式实现: 利用JSqlParse提供的SQL解析技术,通过解析Select、Insert、Update的SQL,比对用户所配置的加密规则策略,动态加密数据字段,从而实现数据的动态加密新增、更新、查询。 用户的项目仅需要引入该框架的依赖,编写加密策略到配置文件中,无需修改任何业务代码(比如:加注解或切面等方式),则可以实现数据的动态加密新增、更新、查询。 #### 安装教程 1. 引入插件依赖 ``` org.dflish mybatis-encrypt-plugins 1.0-SNAPSHOT ``` 2. 配置加密策略 ``` mybatis-plus: encrypt: enabled: true key: liangwx tables: tbl_sys_users: columns: password: encryptor: true pwd_duration: desensitized: true ``` 3. 正常编写上层业务代码 #### 测试教程 1. 加密新增测试 运行单元测试类org.dflish.mybatis.encrypt.AppTest#add ``` @Test public void add(){ User user = new User(); user.setUserId("test01"); user.setUserName("小明"); user.setNickName("test01"); user.setPassword("124124124214"); user.setPwdDuration("124124124214"); usersService.save(user); } ``` 2. 加密更新测试 运行单元测试类org.dflish.mybatis.encrypt.AppTest#update ``` @Test public void update(){ User user = new User(); user.setUserId("test01"); user.setUserName("小明02"); user.setNickName("test02"); user.setPassword("13726788913"); user.setPwdDuration("13726788913"); usersService.updateById(user); } ``` 3. 加密查询测试 运行单元测试类org.dflish.mybatis.encrypt.AppTest#queryTest ``` @Test public void queryTest(){ final LambdaQueryWrapper lambdaQueryWrapper = Wrappers.lambdaQuery(User.class); lambdaQueryWrapper.eq(User::getPassword, "13726788913"); lambdaQueryWrapper.eq(User::getPwdDuration, "13726788913"); List list = usersService.list(lambdaQueryWrapper); list.forEach(e -> { log.info(e.toString()); }); } ``` #### 参与贡献 1. Mybatis 2. JSqlParse 3. ShardingJDBC