================================
©Copyright 蕃薯耀 2022-08-30
蕃薯耀的博客_CSDN博客-蕃薯耀分享,java,js领域博主
基于
- <dependency>
- <groupId>com.baomidougroupId>
- <artifactId>mybatis-plus-boot-starterartifactId>
- <version>${mybatisPlus.version}version>
- dependency>
-
- <dependency>
- <groupId>com.baomidougroupId>
- <artifactId>mybatis-plus-generatorartifactId>
- <version>${mybatisPlusGenerator.version}version>
- <scope>providedscope>
- dependency>
- <dependency>
- <groupId>org.springframework.bootgroupId>
- <artifactId>spring-boot-starter-data-redisartifactId>
- dependency>
-
- <dependency>
- <groupId>com.fhs-opensourcegroupId>
- <artifactId>easy-trans-spring-boot-starterartifactId>
- <version>2.0.2version>
- <exclusions>
- <exclusion>
- <groupId>com.baomidougroupId>
- <artifactId>mybatis-plus-annotationartifactId>
- exclusion>
- exclusions>
- dependency>
-
- <dependency>
- <groupId>com.fhs-opensourcegroupId>
- <artifactId>easy-trans-mybatis-plus-extendartifactId>
- <version>2.0.2version>
- <exclusions>
- <exclusion>
- <groupId>com.baomidougroupId>
- <artifactId>mybatis-plus-coreartifactId>
- exclusion>
- <exclusion>
- <groupId>com.baomidougroupId>
- <artifactId>mybatis-plus-extensionartifactId>
- exclusion>
- exclusions>
- dependency>
-
- <dependency>
- <groupId>commons-beanutilsgroupId>
- <artifactId>commons-beanutilsartifactId>
- <version>1.9.4version>
- dependency>
不要漏了:commons-beanutils
解决Mybatis-Plus版本不一致的注解冲突问题
- Caused by: java.lang.ClassNotFoundException: com.baomidou.mybatisplus.annotation.OrderBy
- at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
- at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
- at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
- at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
- ... 101 common frames omitted

排除 mybatis-plus-annotation
- <dependency>
- <groupId>com.fhs-opensourcegroupId>
- <artifactId>easy-trans-spring-boot-starterartifactId>
- <version>2.0.2version>
- <exclusions>
- <exclusion>
- <groupId>com.baomidougroupId>
- <artifactId>mybatis-plus-annotationartifactId>
- exclusion>
- exclusions>
- dependency>
- spring.redis.host=192.168.11.210
- spring.redis.port=6379
- spring.redis.database=0
- #spring.redis.password=
- spring.redis.timeout=3000
-
- #启用redis缓存 如果不用redis请设置为false
- #如果不使用redis,请在启动类加禁用掉redis的自动配置类
- #@SpringBootApplication(exclude = { RedisAutoConfiguration.class })
- easy-trans.is-enable-redis: true
- #方式1:启用全局翻译(拦截所有responseBody进行自动翻译),如果对于性能要求很高可关闭此配置
- #方式2:标记为 @TransMethodResult 的方法返回值会自动翻译,基于AOP实现,实现效果同全局翻译。
- #方式3:翻译服务的核心是TransService 把此类@Autowired到你的controller或者service中,
- #调用 transOne/transBatch 方法可以翻译单个/多个 pojo,为了性能,TransService 不处理嵌套,
- #比如User里套了个Org org里面的数据不会被翻译。
- easy-trans.is-enable-global: false
- #启用平铺模式
- easy-trans.is-enable-tile: true
- #如果你项目框架使用map的子类包装vo(比如 ruoyi的ajaxResult类)请设置为true否则请不设置或者设置为false
- #easy-trans.is-enable-map-result: true
public class WarehousePrincipal implements Serializable,TransPojo
@Trans(type = TransType.DICTIONARY,key = "warehouse_principal", ref = "typeName")
- @TableName("warehouse_principal")
- @ApiModel(value = "WarehousePrincipal对象", description = "")
- public class WarehousePrincipal implements Serializable,TransPojo {
-
- private static final long serialVersionUID = 1L;
-
- @ApiModelProperty("主键")
- @TableId(value = "id", type = IdType.AUTO)
- private Long id;
-
-
- @Trans(type = TransType.DICTIONARY,key = "warehouse_principal", ref = "typeName")
- @ApiModelProperty("负责人类型,默认为0,0:仓库管理员,1:仓库责任人")
- private Integer type;
-
-
-
- }
- //实现TransPojo 接口,代表这个类需要被翻译或者被当作翻译的数据源
- public class Student implements TransPojo {
- // 字典翻译 ref为非必填
- @Trans(type = TransType.DICTIONARY,key = "sex",ref = "sexName")
- private Integer sex;
-
- //这个字段可以不写,实现了TransPojo接口后有一个getTransMap方法,sexName可以让前端去transMap取
- private String sexName;
-
- //SIMPLE 翻译,用于关联其他的表进行翻译 schoolName 为 School 的一个字段
- @Trans(type = TransType.SIMPLE,target = School.class,fields = "schoolName")
- private String schoolId;
-
- //远程翻译,调用其他微服务的数据源进行翻译
- @Trans(type = TransType.RPC,targetClassName = "com.fhs.test.pojo.School",fields = "schoolName",serviceName = "easyTrans",alias = "middle")
- private String middleSchoolId;
-
- // 枚举翻译,返回文科还是理科给前端
- @Trans(type=TransType.ENUM,key = "desc")
- private StudentType studentType = StudentType.ARTS;
-
- public static enum StudentType{
-
- ARTS("文科"),
- SCIENCES("理科");
-
- private String desc;
- StudentType(String desc){
- this.desc = desc;
- }
- }
- }
因为不是全局配置,所以在需要转换的方法增加注解。
- @TransMethodResult
- @RequestMapping("/queryForPageVO")
- public Result queryForPage(@RequestBody Page
page, - @RequestBody WarehousePrincipalVO params) {
-
- return Result.ok(warehousePrincipalService.queryForPageVO(page, params));
- }
如果要开启全局注解,则需要在配置文件中修改配置项,但开启全局会影响性能。
- #方式1:启用全局翻译(拦截所有responseBody进行自动翻译),如果对于性能要求很高可关闭此配置
- #方式2:标记为 @TransMethodResult 的方法返回值会自动翻译,基于AOP实现,实现效果同全局翻译。
- #方式3:翻译服务的核心是TransService 把此类@Autowired到你的controller或者service中,
- #调用 transOne/transBatch 方法可以翻译单个/多个 pojo,为了性能,TransService 不处理嵌套,
- #比如User里套了个Org org里面的数据不会被翻译。
- easy-trans.is-enable-global: true
- import java.util.Map;
-
- import javax.annotation.Resource;
-
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import org.springframework.scheduling.annotation.Scheduled;
- import org.springframework.stereotype.Component;
-
- import com.fhs.trans.service.impl.DictionaryTransService;
-
-
- @Component
- public class TransJob {
-
- private static final Logger log = LoggerFactory.getLogger(TransJob.class);
-
- @Resource
- private SysDictService sysDictService;
-
- //注入字典翻译服务
- @Resource
- private DictionaryTransService dictionaryTransService;
-
- @Scheduled(initialDelay = 3000, fixedRate = 5 * 60 * 1000)
- public void execute() {
-
- Long startTime = System.currentTimeMillis();
- try {
- dictionaryTransService.makeUseRedis();
-
- Map
> datas = sysDictService.getDictMaps(); -
- if(datas != null && !datas.isEmpty()) {
- for (String key : datas.keySet()) {
- dictionaryTransService.refreshCache(key, datas.get(key));
- }
- }
-
- } catch (Exception e) {
- BizException.error("TransJob更新字典缓存失败", e);
- }
-
- Long endTime = System.currentTimeMillis();
-
- log.info("TransJob更新字典缓存消耗时间为:{}", (endTime - startTime) + " ms");
- }
-
- }
================================
©Copyright 蕃薯耀 2022-08-30