发布于 

Mybatis-plus使用备注

本学习文档主要介绍mybatis-plus这款工具在SpringBoot项目中的使用方法和技巧,包括引入、配置、使用以及扩展进行汇总整理;

Mybatis-plus基本使用

在SpringBoot项目中使用Mybatis-plus

引入mybatis-plus以及基础常用配置

  • 通过Maven在pom.xml中引入mybatis-plus依赖(注意:在使用mybatis-plus时必须要有数据库的依赖,比如mysql-connector-java依赖,至于数据源的依赖看项目具体需要)

    1
    2
    3
    4
    5
    <dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.5.0</version>
    </dependency>
  • 配置数据源(此处省略哈哈哈)

  • 逻辑删除配置

    1
    2
    3
    4
    5
    6
    7
    mybatis-plus:
    # 逻辑删除配置
    global-config:
    db-config:
    logic-delete-field: isDelete # 全局逻辑删除的实体字段名
    logic-delete-value: 1 # 逻辑已删除值(默认为 1)
    logic-not-delete-value: 0 # 逻辑未删除值(默认为 0)
    1
    2
    3
    //使用的是3.3.0版本以上的mybatis-plus时只需要配置上上面的,如果低于3.3.0版本还需要在逻辑删除的字段上加上如下配置
    @TableLogic
    private int isDelete;
  • 实体类注解配置

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    //Lombok的注解可以帮我们生成get、set、equals、toString等方法
    @Data
    //当数据库表和实体名称不一样时,通过配置TableName注解配置实体对应的数据库表名
    @TableName("t_user")
    public class User {
    //设置表的主键,通过配置type = IdType.AUTO,当我们插入一条数据时,id自增(数据库表需提前配置id自增),并会将新的id带回到对象中,方便我们使用updateById,deleteById等方法
    @TableId(type = IdType.AUTO,value = "id")
    private Long id;

    //当表中的列名和字段名不对应时通弄过此注解进行映射
    @TableField("user_id")
    private String userId;

    //mybatis-plus会认为数据库列名为下划线格式,而实体列名为驼峰命名式,所以在默认情况下上面的userId和下面的userName都不需要配置TableField注解
    @TableField("user_name")
    private String userName;

    //逻辑删除注解
    @TableLogic
    @TableField("is_delete")
    private int isDelete;
    }

mybatis-plus使用

其实上面的实体类以及下面这些代码通过后面的Mybatis-X插件可以一键生成,完全不需要手写一句代码

  • Mapper(DAO)层继承BaseMapper

    1
    2
    public interface UserMapper extends BaseMapper<User> {
    }
  • Service接口继承IService

    1
    2
    3
    //这里继承的IService中的泛型是实体类而不是DAO
    public interface UserService extends IService<User> {
    }
  • Service实现层继承ServiceImpl并实现Service接口(记得加上Service注解)

    1
    2
    3
    4
    @Service
    //这里继承ServiceImpl中的第一个泛型是DAO,第二个才是实体类
    public class UserServiceImpl extends ServiceImpl<UserMapper,User> implements UserService {
    }

mybatis-plus条件构造器

1
2
3
4
5
6
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
UpdateWrapper<User> UpdateWrapper = new UpdateWrapper<>();
queryWrapper.eq("user_id",userId);//硬编码
LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();
LambdaUpdateWrapper<User> lambdaUpdateWrapper = new UpdateWrapper<User>().lambda();
lambdaQueryWrapper.eq(User::userId,UserId);//非硬编码

MybatisX-Generator插件用法

  • 在IDEA中连接好系统需要的数据库(好像只有Ultimate版才可以使用,教育版可以忽略了)

  • 选择需要自动生成的数据库表(按住Shift可以同时选择多个数据库表)

  • 右键选择好的数据库表,选择MybatisX-Generator

    image-20221212190018399
  • 然后就出现了这一页,选择需要生成的项目,假如数据库表的字段是下划线格式,并且我们要生成的实体代码字段是驼峰式,这一步正常情况下可以next了,当然也可以配置父类、表前缀后缀、变量前缀后缀等等信息,生成的位置建议就是默认的位置,而不是最终代码所在的位置,不然有可能会影响系统的代码,后续再将生成的实体类手动移动到对应位置

    image-20221212190426845
  • 根据项目的情况选择Mybatis-Plus版本以及Lombok就可以直接点finish了

    image-20221212191113767
  • 生成的代码如图,只需要将generator中的代码文件直接复制到项目中即可,当生成的文件和我们需要的不相符时可以直接删除generator目录重新生成即可,这也是为什么不将生成的代码直接放进项目中对应的包下的原因

    image-20221212191634175



Copyright © 2023 ChenWei | Powered By Stellar
本站已运行 00 小时 00