SpringBoot整合Mybatisplus3.x之CRUD(一)
pom.xml
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.2.0</version>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>p6spy</groupId>
<artifactId>p6spy</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>application.yml
# DataSource Config
spring:
datasource:
driver-class-name: org.h2.Driver
url: jdbc:h2:tcp://192.168.180.115:19200/~/mem/test
username: root
password: test
# Logger Config
logging:
level:
com.mp.crud: debug
dao层
public interface UserMapper extends BaseMapper<User> {
}实体类
@Data
@Accessors(chain = true)
@TableName("user")
public class User {
private Long id;
private String name;
private Integer age;
private String email;
@TableField(exist = false)
private Integer count;
}
配置类
@Configuration
@MapperScan("com.mp.crud.mapper")
public class MybatisPlusConfig {
}
测试类
@SpringBootTest
@RunWith(SpringRunner.class)
class CrudApplicationTests {
@Resource
private UserMapper mapper;
@Test
public void aInsert() {
User user = new User();
user.setName("小羊");
user.setAge(3);
user.setEmail("abc@mp.com");
assertThat(mapper.insert(user)).isGreaterThan(0);
// 成功直接拿会写的 ID
assertThat(user.getId()).isNotNull();
}
@Test
public void bDelete() {
assertThat(mapper.deleteById(3L)).isGreaterThan(0);
assertThat(mapper.delete(new QueryWrapper<User>()
.lambda().eq(User::getName, "Sandy"))).isGreaterThan(0);
}
@Test
public void cUpdate() {
//UPDATE user SET email=? WHERE id=?
assertThat(mapper.updateById(new User().setId(1L).setEmail("ab@c.c"))).isGreaterThan(0);
//UPDATE user SET name=?, age=? WHERE (id = ?)
assertThat(
mapper.update(
new User().setName("mp"),
Wrappers.<User>lambdaUpdate()
.set(User::getAge, 3)
.eq(User::getId, 2)
)
).isGreaterThan(0);
User user = mapper.selectById(2);
assertThat(user.getAge()).isEqualTo(3);
assertThat(user.getName()).isEqualTo("mp");
mapper.update(
null,
Wrappers.<User>lambdaUpdate().set(User::getEmail, null).eq(User::getId, 2)
);
assertThat(mapper.selectById(1).getEmail()).isEqualTo("ab@c.c");
user = mapper.selectById(2);
assertThat(user.getEmail()).isNull();
assertThat(user.getName()).isEqualTo("mp");
mapper.update(
new User().setEmail("miemie@baomidou.com"),
new QueryWrapper<User>()
.lambda().eq(User::getId, 2)
);
user = mapper.selectById(2);
assertThat(user.getEmail()).isEqualTo("miemie@baomidou.com");
mapper.update(
new User().setEmail("miemie2@baomidou.com"),
Wrappers.<User>lambdaUpdate()
.set(User::getAge, null)
.eq(User::getId, 2)
);
user = mapper.selectById(2);
assertThat(user.getEmail()).isEqualTo("miemie2@baomidou.com");
assertThat(user.getAge()).isNull();
}
@Test
public void dSelect() {
mapper.insert(
new User().setId(10086L)
.setName("miemie")
.setEmail("miemie@baomidou.com")
.setAge(3));
assertThat(mapper.selectById(10086L).getEmail()).isEqualTo("miemie@baomidou.com");
User user = mapper.selectOne(new QueryWrapper<User>().lambda().eq(User::getId, 10086));
assertThat(user.getName()).isEqualTo("miemie");
assertThat(user.getAge()).isEqualTo(3);
List<User> users = mapper.selectList(Wrappers.<User>lambdaQuery().select(User::getId));
System.out.println(users);
mapper.selectList(Wrappers.<User>lambdaQuery().select(User::getId))
.forEach(x -> {
assertThat(x.getId()).isNotNull();
assertThat(x.getEmail()).isNull();
assertThat(x.getName()).isNull();
assertThat(x.getAge()).isNull();
});
mapper.selectList(new QueryWrapper<User>().select("id", "name"))
.forEach(x -> {
assertThat(x.getId()).isNotNull();
assertThat(x.getEmail()).isNull();
assertThat(x.getName()).isNotNull();
assertThat(x.getAge()).isNull();
});
}
@Test
public void orderBy() {
List<User> users = mapper.selectList(Wrappers.<User>query().orderByAsc("age"));
System.out.println(users);
//assertThat(users).isNotEmpty();
}
@Test
public void selectMaps() {
List<Map<String, Object>> mapList = mapper.selectMaps(Wrappers.<User>query().orderByAsc("age"));
assertThat(mapList).isNotEmpty();
assertThat(mapList.get(0)).isNotEmpty();
//{ID=1189005852158324737, EMAIL=abc@mp.com, NAME=小羊, AGE=3}
System.out.println(mapList.get(0));
}
@Test
public void selectMapsPage() {
IPage<Map<String, Object>> page = mapper.selectMapsPage(new Page<>(1, 5), Wrappers.<User>query().orderByAsc("age"));
assertThat(page).isNotNull();
assertThat(page.getRecords()).isNotEmpty();
assertThat(page.getRecords().get(0)).isNotEmpty();
}
@Test
public void orderByLambda() {
//SELECT id,name,email,age FROM user ORDER BY age ASC
List<User> users = mapper.selectList(Wrappers.<User>lambdaQuery().orderByAsc(User::getAge));
List<User> users1 = mapper.selectList(Wrappers.<User>query().orderByAsc("age"));
System.out.println(users1);
//assertThat(users).isNotEmpty();
}
@Test
public void testSelectMaxId() {
// SELECT max(id) as id FROM user
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.select("max(id) as id");
//User(id=1189005852158324737, name=null, age=null, email=null, count=null)
User user = mapper.selectOne(wrapper);
System.out.println(user);
System.out.println("maxId=" + user.getId());
List<User> users = mapper.selectList(Wrappers.<User>lambdaQuery().orderByDesc(User::getId));
Assert.assertEquals(user.getId().longValue(), users.get(0).getId().longValue());
}
@Test
public void testGroup() {
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.select("age, count(*)")
.groupBy("age");
List<Map<String, Object>> maplist = mapper.selectMaps(wrapper);
for (Map<String, Object> mp : maplist) {
System.out.println(mp);
}
/**
* lambdaQueryWrapper groupBy orderBy
*/
LambdaQueryWrapper<User> lambdaQueryWrapper = new QueryWrapper<User>().lambda()
.select(User::getAge)
.groupBy(User::getAge)
.orderByAsc(User::getAge);
for (User user : mapper.selectList(lambdaQueryWrapper)) {
System.out.println(user);
}
}
@Test
public void testTableFieldExistFalse(){
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.select("age, count(age) as count")
.groupBy("age");
List<User> list = mapper.selectList(wrapper);
list.forEach(System.out::println);
list.forEach(x->{
Assert.assertNull(x.getId());
Assert.assertNotNull(x.getAge());
Assert.assertNotNull(x.getCount());
});
mapper.insert(
new User().setId(10088L)
.setName("miemie")
.setEmail("miemie@baomidou.com")
.setAge(3));
User miemie = mapper.selectById(10088L);
Assert.assertNotNull(miemie);
}
}
测试结果(我处只运行了部分的测试方法)
SpringBoot整合Mybatisplus3.x之CRUD(一)的更多相关文章
- SpringBoot 整合 MyBatis,实现 CRUD 示例
目录 前言 创建项目/模块 SpringBoot Console Application CommandLineRunner SpringBoot 集成 MyBatis 创建数据库/表 配置数据源/连 ...
- SpringBoot整合MyBatis-Plus3.1详细教程
作者:Sans_ juejin.im/post/5cfa6e465188254ee433bc69 一.说明 Mybatis-Plus是一个Mybatis框架的增强插件,根据官方描述,MP只做增强不做改 ...
- SpringBoot整合MybatisPlus3.X之SQL执行分析插件(十四)
pom.xml <dependencies> <dependency> <groupId>org.springframework.boot</groupId& ...
- SpringBoot整合MybatisPlus3.X之乐观锁(十三)
主要适用场景 意图: 当要更新一条记录的时候,希望这条记录没有被别人更新 乐观锁实现方式: 取出记录时,获取当前version 更新时,带上这个version 执行更新时, set version = ...
- SpringBoot整合MybatisPlus3.X之自定义Mapper(十)
pom.xml <dependencies> <dependency> <groupId>org.springframework.boot</groupId& ...
- SpringBoot整合MybatisPlus3.X之SQL注入器(九)
pom.xml <dependencies> <dependency> <groupId>org.springframework.boot</groupId& ...
- SpringBoot整合MybatisPlus3.X之Wrapper(五)
官方文档说明: 以下出现的第一个入参boolean condition表示该条件是否加入最后生成的sql中 以下代码块内的多个方法均为从上往下补全个别boolean类型的入参,默认为true 以下出现 ...
- SpringBoot整合MybatisPlus3.X之分页插件(四)
注:详细请看2.X博客中,3.X直接上代码. 建议装一个MybatisX插件,可以在Mapper和Xml来回切换 pom.xml <dependencies> <dependency ...
- SpringBoot整合MybatisPlus3.X之逻辑删除(三)
pom.xml <dependencies> <dependency> <groupId>org.springframework.boot</groupId& ...
随机推荐
- pycharm远程代码调试
1.pycharm连接linux服务器并上传功能 # Tools-->Deployment-->Configuration # 点击+号,选择SFTP类型,name填项目名字-->填 ...
- Webstorm轻松部署项目至服务器
wo大前端在开发环境下,需要将项目部署到测试环境,webstorm进行基础配置操作就可实现. 一.在Deployment选项下配置远程服务器地址 点击加号,选择type类型,Name自己填,帮你找到这 ...
- IDEA 学习笔记之 1.5已经过时问题
1.5已经过时问题: apache-maven-3.5.0\conf\settings.xml添加: <profile> <id>jdk-1.8</id> < ...
- 网络下载器 Internet Download Manager v6.35.5 绿色便携版
Internet Download Manager,简称 IDM,是国外的一款优秀网络下载工具.目前凭借着下载计算的速度优势在外媒网站中均受好评,现在已被多数国人熟知.Internet Downloa ...
- Lab_0操作系统实验准备(全)
一.实验介绍 实验目的: 知识储备: 二.相关下载 1.下载镜像文件 这个镜像文件是vdi类型的,只能用visualbox下载 链接:https://pan.baidu.com/s/1L7WX6ju4 ...
- Windows 10 删除C盘的用户,恢复技巧
起因 入域不成功,然后强制删除了C盘 Users里面 账户 然后再进行入域的时候就入域不成功了,如果再进行登录就会提示 无法登录到你的账户 通常可以通过从你的账户注销,然后重新登录解决此问题 如果不立 ...
- KafkaStream低级别API
开发者可以通过Processor接口来实现自己的自定义处理逻辑.接口提供了Process和Punctuate方法. 其中:Process方法用于处理接受到的消息 Punctuate方法指定时间间隔周期 ...
- Java容器总结
容器总结 Java容器工具包框架图 List,Set,Map三者的区别 List(对付顺序的好帮手): List接口存储一组不唯一(可以有多个元素引用相同的对象),有序的对象 Set(注重独一无二的性 ...
- Stock Charts
Description You're in the middle of writing your newspaper's end-of-year economics summary, and you' ...
- Cobalt Strike之CHM、LNK、HTA钓鱼
CHM钓鱼 CHM介绍 CHM(Compiled Help Manual)即“已编译的帮助文件”.它是微软新一代的帮助文件格式,利用HTML作源文,把帮助内容以类似数据库的形式编译储存.利用CHM钓鱼 ...