前面搞了搞mybatis-plus然后总结一下
- 先是多数据源的配置,我这边用的是SpringBoot直接可以在application.properties文件里面配置具体如下
spring.datasource.dynamic.datasource.aaa.driver-class-name=com.mysql.jdbc.Driver spring.datasource.dynamic.datasource.aaa.url=jdbc:xxxxxx spring.datasource.dynamic.datasource.aaa.username=xxxxx spring.datasource.dynamic.datasource.aaa.password=xxxxxxxx
这是一个mysql数据源,然后再加一个
spring.datasource.dynamic.datasource.bbb.driver-class-name=com.mysql.jdbc.Driver spring.datasource.dynamic.datasource.bbb.url=jdbc:xxxxxx spring.datasource.dynamic.datasource.bbb.username=xxxxx spring.datasource.dynamic.datasource.bbb.password=xxxxxxxx
然后可以在ServiceImpl上边加注解@DS(“aaa”)或者@DS(“bbb”)来区分是哪个数据源 - 使用时是通过在实体类上的注解来区分表以及字段比如
我这里面用了lombok代码看着干净些,然后Mybatis-plus是通过你的大小写进行分析的,所以遇到有些特殊命名可以用TableField 指定 - 条件构造器中基本上都可以判断这个条件是否添加到最终sql中
QueryWrapper<UserDO> queryMapper = new QueryWrapper<>(); queryMapper.orderByDesc("CREATE_DATE"); queryMapper.lambda().eq(!StringUtils.isEmpty(request.getUserID()),UserDO::getUserID,request.getUserID());
比如上边这段代码 先是对 CREATE_DATE 进行排序,然后判空,但是这个并不能影响到你后边request.getUserID() 这个入参,如果你在入参又做了一些别的操作,记得在这个条件构造器之外进行非空判断