SpringBoot2.0(mybatis-plus常见的增删改查和分页)

简介: SpringBoot2.0(mybatis-plus常见的增删改查和分页)

一,mybatis-plus常见注解

@TableName 用于定义表名

@TableId 用于定义表的主键

属性

value 用于定义主键字段名

type 用于定义主键类型(主键策略 IdType),具体策略如下:

IdType.AUTO          主键自增,系统分配,不需要手动输入
IdType.NONE          未设置主键
IdType.INPUT         需要自己输入 主键值
IdType.ASSIGN_ID     系统分配 ID,用于数值型数据(Long,对应 mysql 中 BIGINT 类型)
IdType.ASSIGN_UUID   系统分配 UUID,用于字符串型数据(String,对应 mysql 中 varchar(32) 类型)

统一配置主键策略

配置全局默认主键类型,实体类就不用加 @TableId(value = "id", type = IdType.AUTO)

mybatis-plus.global-config.db-config.id-type=auto

@TableField 用于定义表的非主键字段

属性

value 用于定义非主键字段名,用于别名匹配,假如java对象属性和数据库属性不一样

exist 用于指明是否为数据表的字段, true 表示是,false 为不是,假如某个java属性在数据库没对应的字段则要标记为faslse

fill 用于指定字段填充策略(FieldFill,用的不多)

 字段填充策略:一般用于填充 创建时间、修改时间等字段
     FieldFill.DEFAULT         默认不填充
     FieldFill.INSERT          插入时填充
     FieldFill.UPDATE          更新时填充
     FieldFill.INSERT_UPDATE   插入、更新时填充。

二,创建一个工具类和启动类

util包JsonData类

DemoApplication启动类

启动类

package com.demo;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@MapperScan("com.demo.mapper")  //
public class DemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class,args);
    }
}

工具类

package com.demo.util;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor //会生成一个包含所有变量
@NoArgsConstructor //生成一个无参数的构造方法
public class JsonData {
    /**
     * 状态码 0 表示成功,1表示处理中,-1表示失败
     */
    private Integer code;
    /**
     * 数据
     */
    private Object data;
    /**
     * 描述
     */
    private String msg;
    // 成功,传入数据
    public static JsonData buildSuccess() {
        return new JsonData(0, null, null);
    }
    // 成功,传入数据
    public static JsonData buildSuccess(Object data) {
        return new JsonData(0, data, null);
    }
    // 失败,传入描述信息
    public static JsonData buildError(String msg) {
        return new JsonData(-1, null, msg);
    }
    // 失败,传入描述信息,状态码
    public static JsonData buildError(String msg, Integer code) {
        return new JsonData(code, null, msg);
    }
}

三,创建实体类

Bean包Lapop类

package com.demo.bean;
import lombok.Data;
@Data
public class Lapop {
    /** 键盘id */
    private Integer id ;
    /** 键盘名称 */
    private String name ;
    /** 键盘尺寸 */
    private String size ;
    /** 键盘重量 */
    private String weight ;
    /** 电压 */
    private String voltage ;
    /** 电流 */
    private String current ;
    /** 键盘接口 */
    private String interfacepass ;
    /** 按键个数 */
    private String number ;
}

四,创建mapper接口

mapper包LapopMapper接口

package com.demo.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.demo.bean.Lapop;
public interface LapopMapper extends BaseMapper<Lapop> {
}

五,创建service接口和impl类

service包LapopService接口

impl包LapopServiceImpl类

LapopService接口

package com.demo.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.demo.bean.Lapop;
import java.util.List;
import java.util.Map;
public interface LapopService {
    // 查询全部
    List<Lapop> getLapop();
    // 根据id查
    Lapop getByIdLapop(int id);
    //模糊查
    List<Lapop> getLapopBylist(Lapop lapop);
    // 新增
    int addLapop(Lapop lapop);
    // 修改
    int updateLapop(Lapop lapop);
    // 删除
    int deleteLapop(int id);
    // 分页
    IPage<Lapop> selectPageVO(Integer LapopIPage, Integer queryWrapper);
}

LapopServiceImpl类

package com.demo.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.demo.bean.Lapop;
import com.demo.mapper.LapopMapper;
import com.demo.service.LapopService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
@Service
public class LapopServiceImpl implements LapopService {
    @Autowired
    private LapopMapper lapopMapper;
    @Override
    public List<Lapop> getLapop() {
        // 查询全部
        List<Lapop> getLapopList = lapopMapper.selectList(new QueryWrapper<Lapop>());
        return getLapopList;
    }
    @Override
    public Lapop getByIdLapop(int id) {
        // 根据id查
        return lapopMapper.selectById(id);
    }
    @Override
    public List<Lapop> getLapopBylist(Lapop lapop) {
        // 模糊查询
        QueryWrapper queryWrapper = new QueryWrapper<Lapop>();
        queryWrapper.like("name",lapop.getName());
        queryWrapper.gt("Number",lapop.getNumber());
        return lapopMapper.selectList(queryWrapper);
    }
    @Override
    public int addLapop(Lapop lapop) {
        // 新增
        return lapopMapper.insert(lapop);
    }
    @Override
    public int updateLapop(Lapop lapop) {
        // 修改
        return lapopMapper.updateById(lapop);
    }
    @Override
    public int deleteLapop(int id) {
        // 删除
        return lapopMapper.deleteById(id);
    }
    @Override
    public IPage<Lapop> selectPageVO(Integer LapopIPage, Integer queryWrapper) {
        // 分页
        QueryWrapper<Lapop> wrapper = new QueryWrapper<>();
        //第1页,每页2条
        Page<Lapop> page = new Page<>(LapopIPage, queryWrapper);
        IPage<Lapop> LapopbyIPage = lapopMapper.selectPage(page, wrapper);
        System.out.println("总条数"+LapopbyIPage.getTotal());
        System.out.println("总页数"+LapopbyIPage.getPages());
        //获取当前数据
        return LapopbyIPage;
    }
}

六,创建配置类

config包MybatisPlusPageConfig类

配置分页插件

package com.demo.config;
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class MybatisPlusPageConfig {
    /**
     * 新的分页插件
     */
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
        return interceptor;
    }
}

七,创建controller

controller包LapopController类

package com.demo.controller;
import com.demo.bean.Lapop;
import com.demo.service.LapopService;
import com.demo.util.JsonData;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/lapopController")
public class LapopController {
    @Autowired
    private LapopService lapopService;
    @RequestMapping("/LapopList")
    @ResponseBody
    public JsonData LapopList(){
        // 查询全部
        return JsonData.buildSuccess(lapopService.getLapop());
    }
    @RequestMapping("/LapopByIDDList")
    @ResponseBody
    public JsonData LapopByIDDList(int id){
        // 根据id查
        return JsonData.buildSuccess(lapopService.getByIdLapop(id));
    }
    @RequestMapping("/paLapopByList")
    @ResponseBody
    public JsonData paLapopByList(Lapop lapop){
        // 模糊查
        return JsonData.buildSuccess(lapopService.getLapopBylist(lapop));
    }
    @RequestMapping("/insertLapop")
    public Object insertLapop(@RequestBody Lapop lapop){
        // 新增
        int restue = lapopService.addLapop(lapop);
        return JsonData.buildSuccess(restue);
    }
    @RequestMapping("/updateLapop")
    public Object updateLapop(@RequestBody Lapop lapop){
        // 修改
        int request = lapopService.updateLapop(lapop);
        return JsonData.buildSuccess(request);
    }
    @RequestMapping("/deleteLapop")
    public Object deleteLapop(int id){
        // 删除
        return JsonData.buildSuccess(lapopService.deleteLapop(id));
    }
    @RequestMapping("/PageLapop")
    public Object PageLapop(Integer passerIPage, Integer queryWrapper ){
        // 分页
        return JsonData.buildSuccess(lapopService.selectPageVO(passerIPage,queryWrapper));
    }
}

八,使用测试工具测试增删改查和分页

8.1,测试全部查询

8.2,测试根据id查

8.3,测试模糊查询

8.4,测试新增

8.5,测试修改

8.6,测试删除

8.7,测试分页

九,QueryWrapper介绍

QueryWrapper介绍

可以封装sql对象,包括where条件,order by排序,select哪些字段等等

查询包装类,可以封装多数查询条件,泛型指定返回的实体类

List<BannerDO> list = bannerMapper.selectList(new QueryWrapper<BannerDO>());

核心API

- eq 等于
- ne 不等于
- gt 大于
- ge 大于等于
- lt 小于
- le 小于等于
- or 拼接or
- between 两个值中间
- notBetween 不在两个值中间
- like 模糊匹配
- notLike 不像
- likeLeft 左匹配
- likeRight 右边匹配
- isNull 字段为空
- in in查询
- groupBy 分组
- orderByAsc 升序
- orderByDesc 降序
- having having查询


相关文章
|
15天前
|
SQL Java 数据库连接
【MyBatisPlus·最新教程】包含多个改造案例,常用注解、条件构造器、代码生成、静态工具、类型处理器、分页插件、自动填充字段
MyBatis-Plus是一个MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。本文讲解了最新版MP的使用教程,包含多个改造案例,常用注解、条件构造器、代码生成、静态工具、类型处理器、分页插件、自动填充字段等核心功能。
【MyBatisPlus·最新教程】包含多个改造案例,常用注解、条件构造器、代码生成、静态工具、类型处理器、分页插件、自动填充字段
|
24天前
|
SQL 缓存 Java
【详细实用のMyBatis教程】获取参数值和结果的各种情况、自定义映射、动态SQL、多级缓存、逆向工程、分页插件
本文详细介绍了MyBatis的各种常见用法MyBatis多级缓存、逆向工程、分页插件 包括获取参数值和结果的各种情况、自定义映射resultMap、动态SQL
【详细实用のMyBatis教程】获取参数值和结果的各种情况、自定义映射、动态SQL、多级缓存、逆向工程、分页插件
|
8天前
|
Java 数据库连接 数据库
spring和Mybatis的逆向工程
通过本文的介绍,我们了解了如何使用Spring和MyBatis进行逆向工程,包括环境配置、MyBatis Generator配置、Spring和MyBatis整合以及业务逻辑的编写。逆向工程极大地提高了开发效率,减少了重复劳动,保证了代码的一致性和可维护性。希望这篇文章能帮助你在项目中高效地使用Spring和MyBatis。
7 1
|
2月前
|
SQL JSON Java
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
这篇文章介绍了如何在Spring Boot项目中整合MyBatis和PageHelper进行分页操作,并且集成Swagger2来生成API文档,同时定义了统一的数据返回格式和请求模块。
60 1
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
|
2月前
|
前端开发 Java Apache
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个
本文详细讲解了如何整合Apache Shiro与Spring Boot项目,包括数据库准备、项目配置、实体类、Mapper、Service、Controller的创建和配置,以及Shiro的配置和使用。
373 1
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个
|
2月前
|
Java 关系型数据库 MySQL
springboot学习五:springboot整合Mybatis 连接 mysql数据库
这篇文章是关于如何使用Spring Boot整合MyBatis来连接MySQL数据库,并进行基本的增删改查操作的教程。
109 0
springboot学习五:springboot整合Mybatis 连接 mysql数据库
|
2月前
|
Java 数据库连接 API
springBoot:后端解决跨域&Mybatis-Plus&SwaggerUI&代码生成器 (四)
本文介绍了后端解决跨域问题的方法及Mybatis-Plus的配置与使用。首先通过创建`CorsConfig`类并设置相关参数来实现跨域请求处理。接着,详细描述了如何引入Mybatis-Plus插件,包括配置`MybatisPlusConfig`类、定义Mapper接口以及Service层。此外,还展示了如何配置分页查询功能,并引入SwaggerUI进行API文档生成。最后,提供了代码生成器的配置示例,帮助快速生成项目所需的基础代码。
|
2月前
|
前端开发 Java 数据库连接
表白墙/留言墙 —— 中级SpringBoot项目,MyBatis技术栈MySQL数据库开发,练手项目前后端开发(带完整源码) 全方位全步骤手把手教学
本文是一份全面的表白墙/留言墙项目教程,使用SpringBoot + MyBatis技术栈和MySQL数据库开发,涵盖了项目前后端开发、数据库配置、代码实现和运行的详细步骤。
59 0
表白墙/留言墙 —— 中级SpringBoot项目,MyBatis技术栈MySQL数据库开发,练手项目前后端开发(带完整源码) 全方位全步骤手把手教学
|
2月前
|
前端开发 Java 数据库
springBoot:template engine&自定义一个mvc&后端给前端传数据&增删改查 (三)
本文介绍了如何自定义一个 MVC 框架,包括后端向前端传递数据、前后端代理配置、实现增删改查功能以及分页查询。详细展示了代码示例,从配置文件到控制器、服务层和数据访问层的实现,帮助开发者快速理解和应用。
|
2月前
|
Java 数据库连接 Maven
Spring整合Mybatis
Spring整合Mybatis