MyBatis-Plus 语法和常用注解使用

MyBatis-Plus(MP)是MyBatis的增强工具,简化开发流程。本文介绍了MP的Maven依赖、核心注解如@TableName、@TableId、@TableField的用法,以及条件构造类如QueryWrapper和LambdaQueryWrapper的使用,包括eq、ne等条件方法,帮助开发者更高效地进行数据库操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简介

        Maven依赖

        注解讲解

        常用的条件方法

        Wrapper 条件构造抽象类


简介

        MyBatis-Plus(简称 MP)是一个 Mybatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。

Maven依赖

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus</artifactId>
    <version>3.5.1</version>
</dependency>

注解讲解

@TableName 指定表所对应的实体类

使用:表名注解,标识实体类对应的表。

位置:在Dao层实体类上。

常用属性:

        value:表名

        excludeProperty:需要排除的属性名 

@TableName("duck")
public class Duck{
    private Long id;
    private String name;
    private Integer age;
}

@TableId 标明主键

使用:主键注解

位置:实体类的主键字段

@TableName("duck")
public class Duck{
    @TableId
    private Long id;
    private String name;
    private Integer age;
}

 @TableField 对应数据库字段与实体类字段

使用:非主键字段注解

位置:非主键字段上

常用参数:

        exist:标明是否为数据库字段

@TableName("duck")
public class Duck{
    @TableId
    private Long id;
    @TableField("nick_name")
    private String name;
    private Integer age;
}

 @FieldFill 一般用于设置自动填充时间

使用:自动填充字段的值

位置:需要自动填充的字段上

 @TableLogic 逻辑删除标志字段

使用:标明此字段需要逻辑删除

位置:逻辑删除的字段

相关配置

mybatis-plus:
  global-config:
    db-config:
      logic-delete-field: flag # 全局逻辑删除的实体字段名(since 3.3.0,配置后可以忽略不配置步骤2)
      logic-delete-value: 1 # 逻辑已删除值(默认为 1)
      logic-not-delete-value: 0 # 逻辑未删除值(默认为 0)
@TableName("duck")
public class Duck{
    @TableId
    private Long id;
    @TableField("nick_name")
    private String name;
    private Integer age;
    @TableLogic
    private Integer status;
}

常用的条件方法

eq   等价于 =

eq("name","duck") ----> name = 'duck'

ne  等价于 <>

 ne("name","duck") ----> name <> 'duck'

gt   等价于 >

 gt("age",3) ----> name > 3

ge 等价于 >=

 ge("age",3) ----> name >= 3

lt 等价于 <

 lt("age",3) ----> name < 3

 le 等价于 <=

 le("age",3) ----> name <= 3

between  BETWEEN 参数1 AND 参数 2

between("age",0,3) ---> age between 0 and 3

notBetween  NOT BETWEEN 参数1 AND 参数 2 

notBetween("age",0,3) ---> age not between 0 and 3

like 模糊查询

like("name","duck") ---> name like '%duck%'

notLike 模糊查询

notLike("name","duck") ---> name not like '%duck%'

likeLeft 前%模糊查询

likeLeft("name","duck") ---> name like '%duck'

likeRight 后%模糊查询

likeRight("name","duck") ---> name like 'duck%'

isNull 为空

isNull("name") ---> name is null

isNotNull 不为空

isNotNull("name") ---> name is not null

in 

in("id",{1,2,3}) ---> id in (1,2,3)

notIn

notIn("id",{1,2,3}) ---> id not in (1,2,3)

groupBy 分组

groupBy("name") ---> group by name

orderByAsc 升序

orderByAsc("id") ---> order by id ASC

orderByDesc 降序

orderByDesc("id") ---> order by id DESC

 orderBy 排序

orderBy(true, true, "id") ---> order by id ASC
orderBy(true, false, "id") ---> order by id DESC

Wrapper 条件构造抽象类

QueryWrapper 或者 LambdaQueryWrapper

 //创建一个 🦆的QueryWrapper 对象
QueryWrapper<Duck> queryWrapper = new QueryWrapper<>();
//根据id查询🦆
queryWrapper.eq(Duck::getId,param.getId());
//查询🦆列表
List<Duck> duckList = duckMapper.selectList(queryWrapper);
//查询单个🦆
Duck duck = duckMapper.selectOne(queryWrapper);

UpdateWrapper 或者 LambdaUpdateWrapper

//构造更新Wrapper
LambdaUpdateWrapper<Duck> lambdaUpdateWrapper = new LambdaUpdateWrapper<>();
//按照名称更新
lambdaUpdateWrapper.eq(Duck::getName, param.getName());
//执行更新
Duck duck = new Duck();
duckMapper.update(duck,lambdaUpdateWrapper);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小黄鸭技术

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值