package com.wnx.mall.tiny;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.Query;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.wnx.mall.tiny.modules.test.mapper.User2Mapper;
import com.wnx.mall.tiny.modules.test.mapper.UserMapper;
import com.wnx.mall.tiny.modules.test.model.User;
import com.wnx.mall.tiny.modules.test.model.User2;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
import static org.assertj.core.api.Assertions.assertThat;
@SpringBootTest
public class CrudTest {
@Resource
private UserMapper mapper;
@Resource
private User2Mapper user2Mapper;
@Test
public void aInsert(){
User user = new User();
user.setName("小羊");
user.setAge(3);
user.setEmail("abc@mp.com");
int count = mapper.insert(user);
assertThat(count).isGreaterThan(0);
//成功直接拿到回写的ID
assertThat(user.getId()).isNotNull();
}
@Test
public void bDelete(){
int count1 = mapper.deleteById(3L);
int count2 = mapper.delete(new QueryWrapper().lambda().eq(User::getName, "Sandy"));
assertThat(count1).isGreaterThan(0);
assertThat(count2).isGreaterThan(0);
}
@Test
public void cUpdate(){
//根据ID更新
User user = new User();
user.setId(1L);
user.setEmail("ab@c.c");
int count1 = mapper.updateById(user);
//根据ID,更新name,更新email字段
User user1 = new User();
user1.setName("mp");
int count2 = mapper.update(user1, Wrappers.lambdaUpdate()
.set(User::getEmail, "wangnaixing@qq.com")
.eq(User::getId, 2));
//根据ID更新email字段
User user2 = new User();
user2.setEmail("miemie@baomidou.com");
int count3 = mapper.update(user2, new QueryWrapper().lambda()
.eq(User::getId, 2));
//根据ID更新email字段方法2
int count4 = mapper.update(null, Wrappers.lambdaUpdate()
.set(User::getEmail, "wnx@qq.com")
.eq(User::getId, 2));
//根据ID更新email,age字段
User user3 = new User();
user3.setEmail("miemie2@baomidou.com");
int count5 = mapper.update(user3, Wrappers.lambdaUpdate()
.set(User::getAge, 20).eq(User::getId, 2L));
assertThat(count1).isGreaterThan(0);
assertThat(count2).isGreaterThan(0);
assertThat(count3).isGreaterThan(0);
assertThat(count4).isGreaterThan(0);
assertThat(count5).isGreaterThan(0);
}
@Test
public void dSelect() {
mapper.insert(
new User().setId(10086L).setName("miemie")
.setEmail("miemie@baomidou.com")
.setAge(3)
);
//根据ID查询
User user = mapper.selectById(10086L);
//根据条件查询
User user1 = mapper.selectOne(new QueryWrapper().lambda().eq(User::getId, 10086L));
//查询全部ID构成的集合
List userList = mapper.selectList(Wrappers.lambdaQuery().select(User::getId));
userList.forEach(System.out::println);
//查询id,name字段构成的集合
List userList1 = mapper.selectList(new QueryWrapper().select("id", "name"));
//查询id,name字段构成的集合 lambda方式
List userList2 = mapper.selectList(new QueryWrapper().lambda()
.select(User::getId, User::getName));
userList1.forEach(System.out::println);
userList2.forEach(System.out::println);
//查询全部字段构成的集合
List selectList = mapper.selectList(null);
selectList.forEach(System.out::println);
}
@Test
public void orderBy() {
//根据年龄排序
List userList1 = mapper.selectList(Wrappers.query().orderByAsc("age"));
//根据年龄和姓名升序
List userList3 = mapper.selectList(Wrappers.query().orderByAsc("age", "name"));
//先按照age升序排列,age相同再按照name降序排列
List userList5 = mapper.selectList(Wrappers.query().orderByAsc("age").orderByDesc("name"));
//根据年龄排序 lambda方式
List userList2 = mapper.selectList(Wrappers.lambdaQuery().orderByAsc(User::getAge));
//根据年龄和姓名升序 lambada方式
List userList4 = mapper.selectList(Wrappers.lambdaQuery().orderByAsc(User::getAge, User::getName));
//先按照age升序排列,age相同再按照name降序排列 lambada方式
List userList6 = mapper.selectList(Wrappers.lambdaQuery().orderByAsc(User::getAge).orderByDesc(User::getName));
}
@Test
public void selectMaps() {
List
2、继承图
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QY1QB4e9-1641878765775)(D:/%E5%9B%BE%E7%89%87%E7%BB%9F%E4%B8%80%E4%BF%9D%E7%AE%A1%E5%A4%84/image-20220111132354265.png)]
3、总结MP对单表增强太强大了,小到简单的CURD,大到分组聚合,分页,以及lambada的优雅嵌入。使得代码可读性大大提升!



