MyBatis-Plus-(三)MyBatis-Plus的条件构造器

本文最后更新于:February 19, 2022 pm

MyBatis-Plus (opens new window)(简称 MP)是一个 MyBatis (opens new window)的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。支持任何能使用 MyBatis 进行 CRUD, 并且支持标准 SQL 的数据库。

目录

条件构造器(wrapper)

官方文档 已经写的很详细了。直接套用即可。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
@Test
void del() {
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.isNotNull("name") //name不为null
.ge("age",23) //age大于等于23,gt是大于
.eq("name","loong") //name等于loong
.between("age",13,23) //age在13~23之间的
.notLike("name","e") //name中不包含e的
.likeRight("name","w") //name是以w开头的,w%
.likeLeft("name","w") //name是以w结尾的,%w
.orderByAsc("age") //通过age排序

userMapper.selectList(wrapper); //根据条件进行查询
}

常用

allEq

全部等于(满足)。

  • 例1: allEq({id:1,name:"老王",age:null})—>id = 1 and name = '老王' and age is null
  • 例2: allEq({id:1,name:"老王",age:null}, false)—>id = 1 and name = '老王'

eq

等于

  • 例: eq("name", "老王")—>name = '老王'

ne

不等于

  • 例: ne("name", "老王")—>name <> '老王'

gt

大于

  • 例: gt("age", 18)—>age > 18

ge

大于等于

  • 例: ge("age", 18)—>age >= 18

lt

小于

  • 例: lt("age", 18)—>age < 18

le

小于等于

  • 例: le("age", 18)—>age <= 18

between

在两者之间。BETWEEN 值1 AND 值2

  • 例: between("age", 18, 30)—>age between 18 and 30

notBetween

不再两者之间。NOT BETWEEN 值1 AND 值2

  • 例: notBetween("age", 18, 30)—>age not between 18 and 30

like

LIKE '%值%'

  • 例: like("name", "王")—>name like '%王%'

更多见 官方文档

代码生成器

依赖

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.1</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.5.1</version>
</dependency>
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity</artifactId>
<version>1.7</version>
</dependency>

模板

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
private void generate(){
FastAutoGenerator.create("url", "username", "password")
.globalConfig(builder -> {
builder.author("baomidou") // 设置作者
.enableSwagger() // 开启 swagger 模式
.fileOverride() // 覆盖已生成文件
.outputDir("D://"); // 指定输出目录
})
.packageConfig(builder -> {
builder.parent("com.baomidou.mybatisplus.samples.generator") // 设置父包名
.moduleName("system") // 设置父包模块名
.pathInfo(Collections.singletonMap(OutputFile.mapperXml, "D://")); // 设置mapperXml生成路径
})
.strategyConfig(builder -> {
builder.addInclude("t_simple") // 设置需要生成的表名
.addTablePrefix("t_", "c_"); // 设置过滤表前缀
})
// .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
.execute();

}

但感觉EasyCode更简单好用。