1.mybatis-plus 依赖
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.2</version>
</dependency>
2.配置多数据源
我用的SqlServer 所有要有数据库方言
spring:
datasource:
dynamic:
#设置默认的数据源或者数据源组
primary: sql1
#设置严格模式,默认false不启动. 启动后在未匹配到指定数据源时候回抛出异常,不启动会使用默认数据源
strict: false
datasource:
sql2:
driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
url: jdbc:sqlserver:sql地址
username: 账户
password: **
type: com.alibaba.druid.pool.DruidDataSource
sql1:
driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
url: jdbc:sqlserver:sql地址
username: **
password: **
type: com.alibaba.druid.pool.DruidDataSource
3.配置插件
分页插件
// 不需要在启动类中添加@MapperScan 在这里已经扫描完了
@Configuration
@MapperScan({"cn.xfdc.financial.mapper.*"})
public class MybatisPlusConfig {
/**
* 新的分页插件
*/
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
// 设置分页方言啊 我的是SqlServer mysql 用这个 DbType.MYSQL
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.SQL_SERVER2005));
return interceptor;
}
}
自动填充
@Slf4j
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
// 字段名为createTime 都可以自动创建时间 修改就是updateTime
// 需要再字段上面添加 @TableField(fill = FieldFill.INSERT) 注解
@Override
public void insertFill(MetaObject metaObject) {
this.setFieldValByName("createTime", new Date(), metaObject);
}
@Override
public void updateFill(MetaObject metaObject) {
this.setFieldValByName("updateTime", new Date(), metaObject);
}
}
像这样
@TableField(fill = FieldFill.INSERT)
private Date createTime;
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date updateTime;
4.导入实体
没用官网给的一键生成什么controller啥的
用的是idea的一个插件
mapper service 等自动创建
5.增删改查
注入mapper / service
在controlelr 中注入这mapper啥的 会报出红色波浪线 虽然不影响代码
但是瞅着难受 闹心
在mapper类上加入 @Repository(“user”) 就ok
@Repository("user")
public interface UserMapper extends BaseMapper<UserMapper> {
}
// 分页条件
Page<FiClientaccessory> page = new Page<>(pageVo.getPage() + 1, pageVo.getPageSize());
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("clientid", clientId).eq("isdelete", false).orderByDesc("createTime");
Page<User> pageAccessories = accessoryMapper.selectPage(page, queryWrapper);
5.多数据源
在mapper serivce 用到不是主数据源
需要再方法上 加上
@DS("sql2")
6.xml查询sql
mapepr 中传参数是list等集合
where departmentId in
<foreach collection="departmentIds" item="departmentId" index="index" open="(" close=")" separator=",">
#{departmentId}
</foreach>
xml中if判断
// 当然 dto是一个实体类
<if test="dto.startDate != null and dto.endDate != null">
and CreateTime between #{dto.startDate} and #{dto.endDate}
</if>
应该是没啥子了