当前位置: 首页 > article >正文

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

前言

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


http://www.kler.cn/a/388391.html

相关文章:

  • 实验一:自建Docker注册中心
  • 【CSS】“flex: 1“有什么用?
  • Linux第四讲:Git gdb
  • 【vue2.0入门】vue单文件组件
  • 【AI换装整合包及教程】CatVTON与其他虚拟试衣技术的详细对比
  • 品融电商:新形势下电商平台如何助力品牌长期经营
  • axios 访问data类型和.net core 后端对应接收
  • Ubuntu和Debian系列的Release默认shell解释器变更
  • 虚拟现实技术在旅游行业的应用
  • 42.第二阶段x86游戏实战2-lua寻找状态指针
  • C++设计模式结构型模式———责任链模式
  • mapreduce综合应用案例 — 气象数据清洗
  • StarTowerChain 与 DePIN:共筑区块链新蓝图
  • 洛谷每日一题——P1036 [NOIP2002 普及组] 选数、P1045 [NOIP2003 普及组] 麦森数(高精度快速幂)
  • 知从科技受邀出席ARM日产技术日
  • 智谱AI视频生成模型CogVideoX v1.5开源 支持5/10秒视频生成
  • Dear ImGui 使用VS2022编译为静态库
  • 信息安全工程师(84)UNIX/Linux操作系统安全分析与防护
  • 1.2 数据结构的分类与应用
  • AI 大模型:重塑软件开发的新力量
  • 新160个crackme - 095-tengxingCrackMe_v1.1
  • 界面控件DevExpress WPF中文教程:Data Grid——卡片视图设置
  • 初识Linux · 命名管道
  • 洛谷 P2239 [NOIP2014 普及组] 螺旋矩阵
  • lua 编译网路核心
  • 【系统架构设计师】2024年下半年真题论文: 论多源异构数据集成方法(包括参考素材)