Java从坚持到精通-MyBatisPlus

目录

1.MyBatisPlus简介

2.MyBatisPlus入门操作

3.MP开启日志

4.MP的自动映射规则

5.表映射

6.字段映射

7.QueryWrapper与LambdaQueryWrapper

8.分组查询

9.聚合查询

10.排序查询

11.内嵌逻辑查询

12.自定义条件查询

13.last方法

14.exists方法与notExists方法

15.主键策略

16.分页插件

17.ActiveRecord模式

18.SimpleQuery工具类

19.逻辑删除

20.通用枚举

21.字段类型处理器

22.自动填充功能

23.防止全表更新拦截器

24.MyBatisX及逆向工程

​编辑25.悲观锁和乐观锁

悲观锁

乐观锁

MP中的乐观锁使用

26.代码生成器

27.SQL分析打印


1.MyBatisPlus简介

主要就是简化MyBatis开发。

2.MyBatisPlus入门操作

1.引入依赖:需要引入mp和mysql驱动依赖。

        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.5.2</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>

2.编写配置文件,主要是数据库连接信息

spring:
  profiles:
    active: dev
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/duolaimi?serverTimezone=GMT%2B8
    username: root
    password: root

注意:有些版本的jdbc连接数据库的地址后面必须要加上时区,如serverTimezone=GMT%2B8,不加就会启动报错

3.mapper层

原来的mapper接口需要继承BaseMapper并传入对应的泛型即可,BaseMapper中包含了基本的增删改查方法。

@Mapper
public interface UserMapper extends BaseMapper<User> {
}

4.service层

原来的service接口继承IService,并传入对应的泛型即可,IService里面也包含了基础的增删改查的业务方法。

public interface UserService extends IService<User> {
}

5.serviceimpl层

serviceimpl类需要实现原来定义好的service接口,但是只是实现了却没有重写必须的方法,所以需要继承ServiceImpl类,其中需要传两个泛型,第一个泛型是mapper接口,第二个泛型是实体类

@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
}

6.编写controller

注入service对象,然后直接调用增删改查方法即可。

@RestController
public class UserController {

    @Autowired
    private UserService userService;

    @GetMapping("/test")
    public String test(){
        User user = userService.getById(1);
        System.out.println(user);
        return user.toString();
    }

}

3.MP开启日志

直接使用如下配置即可开启日志

mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

开启日志后,每次对数据库进行操作时,会有如下信息输出:

4.MP的自动映射规则

1.表名和实体类名映射,比如user表对应User实体类

2.字段名和实体类属性名映射,如字段名name对应实体类属性名name(getXxx或者setXxx)

3.属性映射默认支持小驼峰命名方式

5.表映射

1.如果表名与实体类名不一致,则可以使用@TableName("xxx")这个注解手动指定映射关系

2.如果每张表都有固定前缀的话,我们可以开启全局配置,使用如下配置指定表名的前缀

mybatis-plus:
  global-config:
    db-config:
      table-prefix: xxx_

6.字段映射

如果数据库字段与类中的属性名不一样,可以直接在属性上使用@TableFiled指定数据库字段名称

    @TableField("xxx")
    private String name;

如果字段或者属性是数据库中的关键字,则可以在@TableField中使用``(飘号)包起来。

如果希望被查询的字段不展示,则可以在@TableField使用select=false属性

如果数据库中的字段不存在,但是实体对象中有属性,可以使用@TableField中的exist=false属性

7.QueryWrapper与LambdaQueryWrapper

这两个是构建条件查询的对象,QueryWrapper后面的参数通过字符串传入,LambdaQueryWrapper可通过lambda表达式传入,写法上更优雅

如果是多条件查询,可以使用两种方法:

1.LambdaQueryWrapper里的条件方法,一直拼条件

2.QueryWrapper里的allEq()方法,参数传map

方法说明:

  • eq:等值查询
  • ne:不等查询
  • gt:大于查询
  • ge:大于等于查询
  • lt:小于查询
  • le:小于等于查询
  • between:区间查询
  • notBetween:不在区间查询
  • like:模糊查询
  • notLike:不包含查询
  • likeLeft:左包含查询
  • likeRight:右包含查询
  • isNull:空值查询
  • isNotNull:非空值查询
  • in:包含查询
  • notIn:不包含查询
  • inSql:包含查询,只不过后面的参数会将传入的sql整个放入in后面
  • notInSql:不包含查询,后面传sql字符串的方式

8.分组查询

分组查询一般

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值