小菜家教平台(五):基于SpringBoot+Vue打造一站式学习管理系统

0 阅读3分钟

 

编辑

前言

之前已经把一些中间件配置得差不多了,接下来再配置一下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的各项功能。