package com.cjs;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.cjs.mapper.UserMapper;
import com.cjs.pojo.User;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import java.sql.Array;
import java.util.*;
@SpringBootTest
class MybatisPlusApplicationTests {
//继承了BaseMapper,所有的方法都来自父类
//我们也可以编写自己的扩展方法
@Autowired
private UserMapper userMapper;
@Test
void contextLoads() {
//参数是一个Wrapper,条件构造器,这里我们先不用 null
//查询全部用户
List<User> users = userMapper.selectList(null);
users.forEach(System.out::println);
}
@Test
public void testInsert(){
User user = new User();
user.setName("sgggad");
user.setAge(21);
user.setEmail("xss111x");
int result = userMapper.insert(user);
System.out.println(result);
System.out.println(user);
}
//测试更新
@Test
public void testUpdate(){
User user = new User();
// 通过条件自动拼接动态sql
user.setId(1501715978537504773L);
user.setName("关s注号");
user.setAge(18);
// 注意: updateById 但是参数是一个 对象
int i = userMapper.updateById(user);
System.out.println(i);
}
// 测试乐观锁成功
@Test
public void testVersionSuccess(){
// 1.查询用户信息
User user = userMapper.selectById(1L);
// 2.修改用户信息
user.setName("fan");
user.setAge(24);
// 3.执行更新操作
userMapper.updateById(user);
}
// 测试乐观锁失败,多线程
@Test
public void testVersionFail(){
// 线程1
User user1 = userMapper.selectById(1L);
user1.setName("fan111");
user1.setAge(14);
// 线程2
User user2 = userMapper.selectById(1L);
user1.setName("fan2222");
user1.setAge(44);
userMapper.updateById(user2);
//自动锁来多次尝试提交
// 如果没有乐观锁就会覆盖插队线程的值
userMapper.updateById(user1);
}
// 测试查询
@Test
public void testSelectById(){
User user = userMapper.selectById(1L);
System.out.println(user);
}
// 测试批量查询
@Test
public void testSelectBatchId(){
List<User> users = userMapper.selectBatchIds(Arrays.asList(1,2,3));
users.forEach(System.out::println);
}
//条件查询之一使用map操作
@Test
public void testSelectByBatchIds(){
HashMap<String,Object> map = new HashMap<>();
// 自定义查询
map.put("name","fan");
map.put("age",24);
List<User> users = userMapper.selectByMap(map);
users.forEach(System.out::println);
}
// 测试分页查询
@Test
public void testPage(){
// 参数一:当前页
// 参数二:页面大小
// 使用分页插件之后,所有的分页操作变得很简单
Page<User> page = new Page<>(2,5);
userMapper.selectPage(page,null);
page.getRecords().forEach(System.out::println);
System.out.println(page.getTotal());
}
//测试删除
@Test
public void testDeleteById(){
userMapper.deleteById(1L);
}
//通过id批量删除
@Test
public void testDeleteBatchId(){
userMapper.deleteBatchIds(Arrays.asList(2, 3, 4));
}
//通过map删除
@Test
public void testDeleteMap(){
HashMap<String, Object> map = new HashMap<>();
map.put("name", "陈伟");
userMapper.deleteByMap(map);
}
// 条件构造器测试一
@Test
void text1(){
// 查询name不为空的用户,并且邮箱不为空的用户,年龄大于12
QueryWrapper<User> wrapper = new QueryWrapper<>();
// ge:大于等于 >=,例: ge("age", 12)--->age >= 12
wrapper.isNotNull("name")
.isNotNull("email")
.ge("age",12);
userMapper.selectList(wrapper).forEach(System.out::println);
}
// 条件构造器测试二
@Test
void text2(){
// 查询名字fan
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.eq("name","2");
User user = userMapper.selectOne(wrapper);
System.out.println(user);
}
// 条件构造器测试三
@Test
void test3(){
//查询年龄在19到30岁之间的用户
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.between("age", 19, 30); //区间
Integer count = userMapper.selectCount(wrapper);
System.out.println(count);
}
// 条件构造器测试四
//模糊查询
@Test
void test4(){
QueryWrapper<User> wrapper = new QueryWrapper<>();
//左和右
wrapper.notLike("name", "b")
.likeRight("email", "t");
List<Map<String, Object>> maps = userMapper.selectMaps(wrapper);
maps.forEach(System.out::println);
}
// 条件构造器测试五
@Test
void test5(){
QueryWrapper<User> wrapper = new QueryWrapper<>();
//通过id进行排序
wrapper.orderByDesc("id");
List<User> users = userMapper.selectList(wrapper);
users.forEach(System.out::println);
}
// 条件构造器测试六
@Test
void test6(){
QueryWrapper<User> wrapper = new QueryWrapper<>();
//id 在子查询中查出来
wrapper.inSql("id", "select id from user where id < 3");
List<Object> objects = userMapper.selectObjs(wrapper);
objects.forEach(System.out::println);
}
}
狂神笔记之mybatisPlus代码。
需积分: 40 162 浏览量
2022-03-14
17:11:06
上传
评论
收藏 77KB ZIP 举报
MASTER-松哥
- 粉丝: 13
- 资源: 10
最新资源
- 论文(最终)_20240430235101.pdf
- 基于python编写的Keras深度学习框架开发,利用卷积神经网络CNN,快速识别图片并进行分类
- 最全空间计量实证方法(空间杜宾模型和检验以及结果解释文档).txt
- 5uonly.apk
- 蓝桥杯Python组的历年真题
- 2023-04-06-项目笔记 - 第一百十九阶段 - 4.4.2.117全局变量的作用域-117 -2024.04.30
- 2023-04-06-项目笔记 - 第一百十九阶段 - 4.4.2.117全局变量的作用域-117 -2024.04.30
- 前端开发技术实验报告:内含4四实验&实验报告
- Highlight Plus v20.0.1
- 林周瑜-论文.docx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
评论0