diff --git a/mybatis-flex-core/src/main/java/com/mybatisflex/core/mask/MaskFactory.java b/mybatis-flex-core/src/main/java/com/mybatisflex/core/mask/MaskFactory.java index af0a527b..5a359d8c 100644 --- a/mybatis-flex-core/src/main/java/com/mybatisflex/core/mask/MaskFactory.java +++ b/mybatis-flex-core/src/main/java/com/mybatisflex/core/mask/MaskFactory.java @@ -25,7 +25,7 @@ public class MaskFactory { /** - * 脱敏处理器 + * 脱敏处理器,type : processer */ private static Map processerMap = new HashMap<>(); @@ -43,16 +43,46 @@ public class MaskFactory { } + /** + * 注册处理器,用户可以注册新的脱敏处理器 或者 覆盖内置的处理器 + * + * @param type 处理器类型 + * @param processer 脱敏处理器 + */ public static void registerMaskProcesser(String type, MaskProcesser processer) { processerMap.put(type, processer); } + private static ThreadLocal skipFlags = new ThreadLocal<>(); + + /** + * 跳过脱敏处理 + */ + public static void skipMask() { + skipFlags.set(Boolean.TRUE); + } + + + /** + * 恢复脱敏处理 + */ + public static void restoreMask() { + skipFlags.remove(); + } + + public static Object mask(String type, Object data) { + Boolean skipMask = skipFlags.get(); + if (skipMask != null && skipMask) { + return data; + } + MaskProcesser maskProcesser = processerMap.get(type); if (maskProcesser == null) { throw new IllegalStateException("Can not get mask processer for by type: " + type); } + return maskProcesser.mask(data); } diff --git a/mybatis-flex-test/mybatis-flex-native-test/src/main/java/com/mybatisflex/test/EntityTestStarter.java b/mybatis-flex-test/mybatis-flex-native-test/src/main/java/com/mybatisflex/test/EntityTestStarter.java index cd494455..a479ec9f 100644 --- a/mybatis-flex-test/mybatis-flex-native-test/src/main/java/com/mybatisflex/test/EntityTestStarter.java +++ b/mybatis-flex-test/mybatis-flex-native-test/src/main/java/com/mybatisflex/test/EntityTestStarter.java @@ -16,15 +16,11 @@ package com.mybatisflex.test; import com.mybatisflex.core.MybatisFlexBootstrap; -import com.mybatisflex.core.paginate.Page; -import com.mybatisflex.core.query.QueryWrapper; -import com.mybatisflex.core.util.UpdateEntity; import org.apache.ibatis.logging.stdout.StdOutImpl; import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseBuilder; import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType; import javax.sql.DataSource; -import java.util.*; public class EntityTestStarter { @@ -47,92 +43,92 @@ public class EntityTestStarter { accountMapper.selectOneById(1)); System.out.println(account); - - List allAccount = bootstrap.execute(AccountMapper.class, accountMapper -> - accountMapper.selectListByQuery(QueryWrapper.create())); - System.out.println(allAccount); - - - Account newAccount = new Account(); - newAccount.setUserName("lisi"); - newAccount.setAge(18); - newAccount.setBirthday(new Date()); - bootstrap.execute(AccountMapper.class, accountMapper -> - accountMapper.insert(newAccount)); - - //新增后自动回填主键 - System.out.println("newAccount.id >>>>>> " + newAccount.getId()); - - - List newAccountList = new ArrayList<>(); - for (int i = 0; i < 5; i++) { - Account insertAccount = new Account(); - insertAccount.setUserName("new_user_" + i); - insertAccount.setAge(22); - insertAccount.setBirthday(new Date()); - newAccountList.add(insertAccount); - } - - //批量插入数据 - bootstrap.execute(AccountMapper.class, accountMapper -> - accountMapper.insertBatch(newAccountList)); - - - bootstrap.execute(AccountMapper.class, accountMapper -> - accountMapper.deleteById(1)); - - - bootstrap.execute(AccountMapper.class, accountMapper -> - accountMapper.deleteBatchByIds(Arrays.asList(1, 2, 3))); - - - Map where = new HashMap<>(); - where.put("id", 2); - bootstrap.execute(AccountMapper.class, accountMapper -> - accountMapper.deleteByMap(where)); - - - Account updateAccount1 = UpdateEntity.wrap(Account.class); - updateAccount1.setId(5L); - updateAccount1.setUserName(null); - updateAccount1.setAge(60); - bootstrap.execute(AccountMapper.class, accountMapper -> - accountMapper.update(updateAccount1, false)); - - - Account updateAccount2 = UpdateEntity.wrap(Account.class); - updateAccount2.setId(6L); - updateAccount2.setAge(40); - bootstrap.execute(AccountMapper.class, accountMapper -> - accountMapper.update(updateAccount2)); - - - List allAccounts = bootstrap.execute(AccountMapper.class, accountMapper -> - accountMapper.selectListByQuery(QueryWrapper.create())); - System.out.println(allAccounts); //count 5 - - - //分页查询,第 2 页,每页 3 条数据 - Page accountPage = bootstrap.execute(AccountMapper.class, accountMapper -> - accountMapper.paginate(2, 3, QueryWrapper.create())); - System.out.println(accountPage); - - - Account optionsAccount = new Account(); - optionsAccount.setUserName("optionstest"); - optionsAccount.addOption("c1", 11); - optionsAccount.addOption("c2", "zhang"); - optionsAccount.addOption("c3", new Date()); - - - bootstrap.execute(AccountMapper.class, accountMapper -> - accountMapper.insert(optionsAccount)); - System.out.println(">>>>>>> optionsAccount: " + optionsAccount.getId()); - - - Account selectOptionsAccount = bootstrap.execute(AccountMapper.class, accountMapper -> - accountMapper.selectOneById(optionsAccount.getId())); - System.out.println(selectOptionsAccount); +// +// List allAccount = bootstrap.execute(AccountMapper.class, accountMapper -> +// accountMapper.selectListByQuery(QueryWrapper.create())); +// System.out.println(allAccount); +// +// +// Account newAccount = new Account(); +// newAccount.setUserName("lisi"); +// newAccount.setAge(18); +// newAccount.setBirthday(new Date()); +// bootstrap.execute(AccountMapper.class, accountMapper -> +// accountMapper.insert(newAccount)); +// +// //新增后自动回填主键 +// System.out.println("newAccount.id >>>>>> " + newAccount.getId()); +// +// +// List newAccountList = new ArrayList<>(); +// for (int i = 0; i < 5; i++) { +// Account insertAccount = new Account(); +// insertAccount.setUserName("new_user_" + i); +// insertAccount.setAge(22); +// insertAccount.setBirthday(new Date()); +// newAccountList.add(insertAccount); +// } +// +// //批量插入数据 +// bootstrap.execute(AccountMapper.class, accountMapper -> +// accountMapper.insertBatch(newAccountList)); +// +// +// bootstrap.execute(AccountMapper.class, accountMapper -> +// accountMapper.deleteById(1)); +// +// +// bootstrap.execute(AccountMapper.class, accountMapper -> +// accountMapper.deleteBatchByIds(Arrays.asList(1, 2, 3))); +// +// +// Map where = new HashMap<>(); +// where.put("id", 2); +// bootstrap.execute(AccountMapper.class, accountMapper -> +// accountMapper.deleteByMap(where)); +// +// +// Account updateAccount1 = UpdateEntity.wrap(Account.class); +// updateAccount1.setId(5L); +// updateAccount1.setUserName(null); +// updateAccount1.setAge(60); +// bootstrap.execute(AccountMapper.class, accountMapper -> +// accountMapper.update(updateAccount1, false)); +// +// +// Account updateAccount2 = UpdateEntity.wrap(Account.class); +// updateAccount2.setId(6L); +// updateAccount2.setAge(40); +// bootstrap.execute(AccountMapper.class, accountMapper -> +// accountMapper.update(updateAccount2)); +// +// +// List allAccounts = bootstrap.execute(AccountMapper.class, accountMapper -> +// accountMapper.selectListByQuery(QueryWrapper.create())); +// System.out.println(allAccounts); //count 5 +// +// +// //分页查询,第 2 页,每页 3 条数据 +// Page accountPage = bootstrap.execute(AccountMapper.class, accountMapper -> +// accountMapper.paginate(2, 3, QueryWrapper.create())); +// System.out.println(accountPage); +// +// +// Account optionsAccount = new Account(); +// optionsAccount.setUserName("optionstest"); +// optionsAccount.addOption("c1", 11); +// optionsAccount.addOption("c2", "zhang"); +// optionsAccount.addOption("c3", new Date()); +// +// +// bootstrap.execute(AccountMapper.class, accountMapper -> +// accountMapper.insert(optionsAccount)); +// System.out.println(">>>>>>> optionsAccount: " + optionsAccount.getId()); +// +// +// Account selectOptionsAccount = bootstrap.execute(AccountMapper.class, accountMapper -> +// accountMapper.selectOneById(optionsAccount.getId())); +// System.out.println(selectOptionsAccount); } }