当前位置: 首页 > news >正文

MyBatis-Plus联表查询(mybatis-plus-join)

一、引入依赖

<dependency><groupId>com.baomidou</groupId><artifactId>dynamic-datasource-spring-boot-starter</artifactId><version>3.2.1</version>
</dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.1</version>
</dependency><dependency><groupId>com.github.yulichang</groupId><artifactId>mybatis-plus-join</artifactId><version>1.2.4</version>
</dependency>

这里建议使用此版本!!!

二、修改yml文件

server:port: 10001spring:application:name: special_work_uploaddatasource:dynamic:primary: masterstrict: false # 是否启用严格模式,默认不启动. 严格模式下未匹配到数据源直接报错, 非严格模式下则使用默认数据源primary所设置的数据源datasource:master:url: jdbc:mysql://localhost:3306/enterprise_psm?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&useSSL=falseusername: # 用户名password: # 密码driver-class-name: com.mysql.cj.jdbc.Driverslave_1:url: jdbc:mysql://localhost:3306/enterprise_authorization?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&useSSL=falseusername: # 用户名password: # 密码driver-class-name: com.mysql.cj.jdbc.Driver
#
#mybatis-plus:
#  configuration:
#    # 这个配置会将执行的sql打印出来,在开发或测试的时候可以用
#    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

三、修改主启动类

添加@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})

四、自定义注解

@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@DS("master")
public @interface Master {
}

Slave也同样如此

五、添加Mapper类,指定数据源

@Mapper
@Slave
public interface UserMapper extends MPJBaseMapper<User> {
}

六、添加Service类以及其实现

public interface UserService extends IService<User> {/*** 获取分析人信息* @return*/List<AnalystVO> getAnalystList();
}
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper,User> implements UserService {@Resourceprivate WorkJsaMapper workJsaMapper;@Overridepublic List<AnalystVO> getAnalystList() {List<AnalystVO> analystVOList = new ArrayList<>();List<Long> analystList = workJsaMapper.selectList(null).stream().map(WorkJsa::getAnalyst).collect(Collectors.toList());this.getBaseMapper().selectBatchIds(analystList).parallelStream().forEach(user -> {AnalystVO analystVO = new AnalystVO();analystVO.setAnalyst(user.getId());analystVO.setUserName(user.getNickName());analystVOList.add(analystVO);});return analystVOList;}
}


http://www.mrgr.cn/news/13366.html

相关文章:

  • 实习结束总结20240828
  • LeetCode面试题Day18|LC61 旋转链表
  • Python TensorFlow入门与实践
  • Celery 中,广播模式可以通过使用 RabbitMQ 的 fanout 交换机来实现
  • JS脚本实现RPA模拟人工操作网页获取数据
  • 登录失败时刷新验证码
  • Avalonia与WPF开发时的差异总结
  • C语言基础(十二)
  • 美国短剧APP借力Facebook广告引流核心优势攻略
  • const、inline、nullptr的使用
  • Spring框架 基础介绍
  • SpringBoot核心配置文件(SpringBoot学习3)
  • 结合令牌(JWT)和签名认证的系统登录及页面访问的详细实现原理和流程
  • APP渠道来源方案探索
  • Docker培训
  • 【MySQL进阶之路】事务的隔离级别
  • 优秀的开源项目
  • MyBatis缓存机制 ▎特殊符号处理
  • 经验笔记:基于Token的身份认证及其安全性探讨
  • Elasticsearch搜索引擎