mybatis-plus

mybatis-plus只对mybatis进行增强不做改变
mybatis-plus主键生成采用的雪花算法,所以mysql数据库定义id的时候选择bigint类型,分布式系统采用雪花算法生成id 可以保证id不重复
lombok除了需要导入依赖 还需要在idea中安装一下它的插件
使用mysql 8 及以上版本需在连接url的参数中指定时区 serverTimezone=GMT%2B8 东八区
mybatis-plus需要我们创建的mapper接口继承BaseMapper
insert方法既可以添加数据,也可以获取数据最新生成的id
删除: 根据id删除 根据id集合删除 根据map删除
updateById 传入一个对象 对象必须有id
我们自定义mapper.xml的话也和以前一样,接口中定义方法,xml中定义sql
mybatis-plus会提供IService接口及它的实现类ServiceImpl,里面一些基本的功能已经都实现了,我们的接口直接继承IServece接口,我们的实现类也继承ServiceImpl实现类. 特殊的逻辑自己写,通用的直接用已经提供的
mybatis-plus.global-config.db-config.table-prefix 这个属性可以设置全局表前缀,无需每个表都去加 @TableName

常用注解
@TableName(“表的名称”) 注解在实体类上 来设置实体类的表名(实体类名称和表名不一致的情况)
@TableId 注解在字段上,代表此字段对应的列是表的主键 默认名字为 id 的字段为主键
@TableId 注解有两个属性 value 和 type value 代表表的主键名称(表的主键名称和实体类的字段名称不一致时使用) type代表主键的生成策略 默认是雪花算法 如果数据库是主键自增,那么 这里要选择 Type.AUTO
mybatis-plus.global-config.db-config.id-type 可以设置全局id生成策略,无需每个表都去设置
@TableField(“表的列名”) 实体类的字段名和表的列名不同需加此注解
@TableLogic 指定字段为逻辑删除字段,有了此注解,之后的删除都是逻辑删除修改逻辑删除字段值为1 并且查询出来的结果会排除逻辑删除的内容
@Version 注解在乐观锁版本号字段上 同时需要向mybatis-plus拦截器中增加乐观锁组件
@EnumValue 将此注解加在枚举类的某个属性上,那么我们操作数据库时,某个属性直接传入枚举对象就可以直接将@EnumValue 注解的枚举属性插入数据库对应字段 但是枚举类所在的包需要在配置文件中扫描 mybatis-plus.type-enums-package

条件构造器 Wrapper
修改的时候也可以用queryWrapper 加要修改为的对象, 满足条件的修改为给定的值. 或者用updateWrapper 只是要修改的值放在了 set() 里.

and(条件) or(条件) 相当于是带了一个小括号,优先执行的
子查询 inSql() 方法
queryWrapper.select(字段1,字段2…) 可以固定查询哪几个列
condition 进行参数的判断 避免if else

但是以上的queryWrapper和updateWrapper都需要手动写字段名,并不是我们想要的.那么可以使用LambdWrapper,直接从实体类获取属性名

分页查询的话,需要先创建一个配置类,配置类中将mybatis-plus的拦截器对象添加内部分页拦截器后 注入spring 然后再执行selectPage()
Page page=new Page<>(2,2); //当前页,每页数量
IPage userIPages = userMapper.selectPage(page,null); 此处null代表没有查询条件查所有.
如果有查询条件可以创建 queryWrapper在里面添加
另外也可以自定义userMapper的方法来 实现自定义分页 但是这个分页方法的返回值需要是一个IPage 入参第一个参数是 Page 对象 sql中正常写就行 比如select * from user where age >#{age}

 @Configuration
public class MybatisPlusConfig {

    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor(){
        MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
        mybatisPlusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
        return mybatisPlusInterceptor;
    }
}

乐观锁,给数据加一个version版本号,获取数据的时候同时获取到版本号,修改的数据的时候以自己拿到的版本号作为查询条件之一,能够匹配则修改,同时修改版本号.

mybatisplus多数据源,需要导入多数据源的起步依赖

<dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
            <version>3.5.0</version>
        </dependency>
		

另外在serviceimpl类上加一个 @DS(“数据源名称”) 就可以指定具体使用哪个数据源了.
@DS(“数据源名称”) 这个注解既可以加在类上也可以加在方法上,方法上是优先于类上的. 从而实现读写分离

然后在配置文件的数据库配置就不是一个 datasource了 而是配置多个

 spring:
   datasource:
     dynamic:
       primary: master
       strict: false
       datasource:
         master:
             url: jdbc:mysql://localhost:3306/springboot?characterEncoding=utf-8&useSSL=false
             username: root
             password: root
             driver-class-name: com.mysql.cj.jdbc.Driver
         slave_1:
             url: jdbc:mysql://localhost:3306/springboot2?characterEncoding=utf-8&useSSL=false
             username: root
             password: root
             driver-class-name: com.mysql.cj.jdbc.Driver 

在idea中安装mybatisX这个插件,然后就可以不用导入依赖及自己使用代码生成各个文件了. 图形化页面选择即可. 同时可以生成各个条件组合的curd的方法及mapper.xml中对应的动态sql

mybatisX插件用法 https://baomidou.com/pages/ba5b24/

idea延长使用时间的命令
创建个.bat文件,内容为以下,替换成自己的目录
rd C:\Users\wwzzh.IntelliJIdea2019.2\config\eval /s /q
del /f /s /q C:\Users\wwzzh.IntelliJIdea2019.2\config\options\other.xml
reg delete HKEY_CURRENT_USER\Software\JavaSoft\Prefs\jetbrains\idea
直接运行bat文件即可继续试用(运行前请勿打开idea程序)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值