常见注解

MybatisPlus实现CRUD的基本原理

MybatisPlus通过扫描实体类,并基于反射获取实体类信息作为数据库表信息

  • 类名驼峰转下划线作为表名
  • 名为id的字段作为主键
  • 变量名驼峰转下划线作为表的字段名

【MybatisPlus】-常见注解、配置以及插件_分页插件

注解

如果不符合上述约定,就需要自己配置,此时就需要用到注解

MybatisPlus中比较常用的几个注解如下:

  • @TabieName:用来指定表名
  • @Tableld:用来指定表中的主键字段信息.
  • @TableField:用来指定表中的普通字段信息

当实体类的名称与表名不一致时,就需要用到@TabieName

【MybatisPlus】-常见注解、配置以及插件_实体类_02

如果当主键字段与实体当中的名不一致就需要加@Tableld

【MybatisPlus】-常见注解、配置以及插件_字段_03

IdType有三种

  • AUTO:数据库自增长(数据库生成)
  • INPUT:通过set方法自行输入(程序员手动设置)
  • ASSIGN_ID:分配ID 用接口ldentifierGenerator的方法nextld来生成id,默认突现类为DefaultldentifierGenerator雪花算法(MyBatisPlus生成)

使用TableField常见场景

成员变量与数据库字段名不一致需要使用

【MybatisPlus】-常见注解、配置以及插件_数据库_04

成员变量以is开头,且是布尔值

【MybatisPlus】-常见注解、配置以及插件_分页插件_05

成员变量名与数据库关键字冲突

转义字符

【MybatisPlus】-常见注解、配置以及插件_分页插件_06

成员变量不是数据库字段

【MybatisPlus】-常见注解、配置以及插件_实体类_07


常见配置

MyBatisPlus的配置项继承了MyBatis原生配置和一些自己特有的配置。

如:

【MybatisPlus】-常见注解、配置以及插件_分页插件_08

一般情况下都是默认的,如果需要更改,可以上官网查看,当然idea也有提示


分页插件

首先,要在配置类中注册MyBatisPlus的核心插件,同时添加分页插件:

package com.itheima.mp.config;

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class MybatisConfig {

    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        // 初始化核心插件
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        // 添加分页插件
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
        return interceptor;
    }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.

接下来就可以直接使用了

 @Test
    void testPageQuery(){
        int pageNo = 1, pageSize = 2;
        Page<User> page = Page.of(pageNo, pageSize);

        page.addOrder(new OrderItem("balance",true));
        page.addOrder(new OrderItem("id",true));

        Page<User> p = userService.page(page);

        //总条数
        long total = p.getTotal();
        //页数
        long pages = p.getPages();
        //分页结果
        List<User> users = p.getRecords();

    }
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.


总结

MyBatisPlus使用的基本流程

引入起步依赖

自定义的Mapper基础的BaseMapper

在实体类上添加注解声明 表信息