编辑
前言
之前已经把一些中间件配置得差不多了,接下来再配置一下Swagger和学习一下Mybatis-Plus的入门使用,再稍微分析一下业务,就得开始写CRUD代码了。
今日进度
配置Swagger、学习Mybatis-Plus
详细操作
一、配置Swagger已经单独写了一篇博客,如下:配置Swagger
二、入门Mybatis-Plus的基本使用
首先要有一个实体类给我们来进行测试
@Data
@TableName(value = "user")
public class User implements Serializable {
//因为这个类要存数据到Redis中,所以要进行序列化操作,继承Serializable
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.AUTO) // 这里设置id为自增
private Integer id;
private String username;
private String password;
private String phoneNumber;
private String role;
private String status;
private String createdAt;
private String email;
private String picture;
}
添加一下Mybatis-Plus的相关配置,使用分页查询的时候会用到
@Configuration
public class MybatisPlusConfig {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {//拦截器
MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
mybatisPlusInterceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());//创建乐观锁拦截器 OptimisticLockerInnerInterceptor
mybatisPlusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL)); //插件分页拦截器,我的是mysql
return mybatisPlusInterceptor;
}
}
添加一下日志输出
#mybatis-plus日志输出
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
最后进行测试就行了
package com.example.familyeducation.mapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.example.familyeducation.entity.User;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
@SpringBootTest
public class MapperTest {
@Autowired
private UserMapper userMapper;
//测试mybatis-plus查询
@Test
public void testUserMapper(){
List<User> users = userMapper.selectList(null);
users.forEach(System.out::println);
}
//测试插入
@Test
public void testInsertUser(){
User user = new User();
user.setUsername("小林老师");
user.setPassword("11");
user.setPhoneNumber("222222");
user.setRole("parent");
user.setEmail("222222@qq.com");
int insert = userMapper.insert(user);
System.out.println("插入成功的数量:"+insert);
System.out.println("插入用户信息:"+user);
}
//测试更新
@Test
public void testUpdateUser(){
User user = new User();
user.setUsername("小刘老师");
user.setPassword("22");
user.setPhoneNumber("222222");
user.setRole("parent");
user.setEmail("222222@qq.com");
userMapper.updateById(user);//注意这里传的是实体不是id
}
//测试查询单个用户
@Test
public void testSelectUserById(){
User user = userMapper.selectById(1);
System.out.println(user);
}
//测试查询多个用户
@Test
public void testSelectUserByIds(){
List<User> users = userMapper.selectBatchIds(Arrays.asList(1, 3, 5));
users.forEach(System.out::println);
}
//测试条件查询
@Test
public void testSelectByMap(){
HashMap<String, Object> map = new HashMap<>();
map.put("username","小牛老师");
map.put("id",2);
List<User> users = userMapper.selectByMap(map);
users.forEach(System.out::println);
}
//测试分页查询
@Test
public void testPage(){
Page<User> page = new Page<>(1, 3);
userMapper.selectPage(page,null);
page.getRecords().forEach(System.out::println);
}
//测试删除
@Test
public void testDelete(){
userMapper.deleteById(5);
}
//条件构造器
@Test
public void testWrapper1(){
//新建条件构造器
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
//链式编程:添加查询条件
// eq相等 ne不相等, gt大于, lt小于 ge大于等于 le 小于等于
queryWrapper.eq("email","111111@qq.com").ge("id",2);
userMapper.selectList(queryWrapper).forEach(System.out::println);
User user = userMapper.selectOne(queryWrapper);//当查询到的数据大于一报错!!!
System.out.println(user);
queryWrapper.between("id","2","3");//String不要用between查
userMapper.selectList(queryWrapper).forEach(System.out::println);
System.out.print("查询的数量:"+userMapper.selectCount(queryWrapper));
}
//模糊查询
@Test
public void testWrapper2(){
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
// queryWrapper.like("username","妈妈");//模糊查询存在"妈妈"
// queryWrapper.notLike("username","管理员");//模糊查询不存在"管理员"
queryWrapper.likeRight("username","小");//模糊查询右侧,这里左侧是"小"
queryWrapper.likeLeft("username","管理员");//模糊查询左侧,这里右侧是"管理员"
userMapper.selectList(queryWrapper).forEach(System.out::println);
}
}
如果Application.properties中有中文乱码问题
先添加下面配置,再去设置中把文件编码改为UTF-8即可
#配置文件编码保证中文不乱吗
server.tomcat.uri-encoding=UTF-8
server.servlet.encoding.force=true
server.servlet.encoding.charset=UTF-8
server.servlet.encoding.enabled=true
总结
本文介绍了MyBatis-Plus的基本使用,涵盖了实体类的配置、MyBatis-Plus拦截器的设置、分页查询、增删改查操作、条件构造器的使用及模糊查询等功能。配置了Swagger进行API文档生成,并测试了MyBatis-Plus的各项功能。