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

目录

  • 一,mybatis-plus常见注解
  • 二,创建一个工具类和启动类
  • 三,创建实体类
  • 四,创建mapper接口
  • 五,创建service接口和impl类
  • 六,创建配置类
  • 七,创建controller
  • 八,使用测试工具测试增删改查和分页
    • 8.1,测试全部查询
    • 8.2,测试根据id查
    • 8.3,测试模糊查询
    • 8.4,测试新增
    • 8.5,测试修改
    • 8.6,测试删除
    • 8.7,测试分页
  • 九,QueryWrapper介绍

一,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 {@Autowiredprivate LapopMapper lapopMapper;@Overridepublic List<Lapop> getLapop() {// 查询全部List<Lapop> getLapopList = lapopMapper.selectList(new QueryWrapper<Lapop>());return getLapopList;}@Overridepublic Lapop getByIdLapop(int id) {// 根据id查return lapopMapper.selectById(id);}@Overridepublic List<Lapop> getLapopBylist(Lapop lapop) {// 模糊查询QueryWrapper queryWrapper = new QueryWrapper<Lapop>();queryWrapper.like("name",lapop.getName());queryWrapper.gt("Number",lapop.getNumber());return lapopMapper.selectList(queryWrapper);}@Overridepublic int addLapop(Lapop lapop) {// 新增return lapopMapper.insert(lapop);}@Overridepublic int updateLapop(Lapop lapop) {// 修改return lapopMapper.updateById(lapop);}@Overridepublic int deleteLapop(int id) {// 删除return lapopMapper.deleteById(id);}@Overridepublic 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 {/*** 新的分页插件*/@Beanpublic 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 {@Autowiredprivate LapopService lapopService;@RequestMapping("/LapopList")@ResponseBodypublic JsonData LapopList(){// 查询全部return JsonData.buildSuccess(lapopService.getLapop());}@RequestMapping("/LapopByIDDList")@ResponseBodypublic JsonData LapopByIDDList(int id){// 根据id查return JsonData.buildSuccess(lapopService.getByIdLapop(id));}@RequestMapping("/paLapopByList")@ResponseBodypublic 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查询

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/82302.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Reids Cluster集群部署

服务器端口说明 vim /etc/hosts 1.下载、解压、编译Redis $ mkdir -p /opt/redis && cd /opt/redis $ wget http://download.redis.io/releases/redis-6.0.6.tar.gz $ tar xzf redis-6.0.6.tar.gz 请先检查gcc的版本是否低于5&#xff0c;如果是请先升级&#xff0c…

听GPT 讲Istio源代码--pilot(7)

File: istio/pilot/pkg/model/log.go 在Istio项目中&#xff0c;istio/pilot/pkg/model/log.go文件的作用是定义了Istio Pilot的日志记录功能。 该文件中定义了一个名为log的全局日志记录器&#xff0c;并且还定义了一些与日志记录相关的变量&#xff0c;如verbose、verboseCou…

幸福里基于 Flink Paimon 的流式数仓实践

摘要&#xff1a;本文整理自字节跳动基础架构工程师李国君&#xff0c;在 Streaming Lakehouse Meetup 的分享。幸福里业务是一种典型的交易、事务类型的业务场景&#xff0c;这种业务场景在实时数仓建模中遇到了诸多挑战。本次分享主要介绍幸福里业务基于 Flink & Paimon …

Linux日志管理-logrotate(crontab定时任务、Ceph日志转储)

文章目录 一、logrotate概述二、logrotate基本用法三、logrotate运行机制logrotate参数 四、logrotate是怎么做到滚动日志时不影响程序正常的日志输出呢&#xff1f;Linux文件操作机制方案一方案二 五、logrotate实战--Ceph日志转储参考 一、logrotate概述 logrotate是一个用于…

数据结构--哈希表,哈希函数(或者散列表、散列函数)

目录 哈希表的定义 处理冲突的方法--拉链法 散列查找 常见的散列函数&#xff08;构造哈希函数&#xff09; 除留余数法 直接定址法 数字分析法 平方取中法 处理冲突的方法--开放定址法 &#xff08;1&#xff09;线性探测法&#xff1a; &#xff08;2&#xff09…

mall商城项目:只启动mall-admin情况下Windows环境的部署

文章目录 前提ideaMysql创建数据库mall,导入项目document/sql文件夹下的mall.sql文件,初始化数据RedisPostMan登录接口测试运行前提 mall项目gitee 如果项目只启动mall-admin,仅需安装MySQL、Redis即可 idea IDEA的安装与使用请参考搜索插件仓库,安装插件Lombok;将项目下…

速腾聚创80线激光雷达ros驱动安装

1. 激光雷达硬件连接 1.1 工具准备 1.2 硬件连接 设置PC Ubuntu1804静态IP&#xff0c;速腾聚创16线激光雷达出厂默认发送到192.168.1.102&#xff0c;在连接前可以通过wireshark抓包工具进行检测&#xff1b; sudo wireshark 正常发送UDP数据流才算正常接入&#xff01; 2. 软…

C语言入门Day_22 初识指针

目录 前言&#xff1a; 1.内存地址 2.指针的定义 3.指针的使用 4.易错点 5.思维导图 前言&#xff1a; 之前我们学过变量可以用来存储数据&#xff0c;就像一个盒子里面可以放不同的球一样。 这是一个方便大家理解专业概念的比喻。 在计算机世界里面&#xff0c;数据实…

怎么防止360安全卫士修改默认浏览器?

默认的浏览器 原先选项是360极速浏览器&#xff08;如果有安装的话&#xff09;&#xff0c;我这里改成了Chrome。 先解锁 才能修改。

千巡翼X1 让航测无人机更小更轻更高效

利用无人机进行航空摄影测量&#xff0c;已成为测绘外业生产的主要方式&#xff0c;不仅方便快捷&#xff0c;更能全面准确获得成果。近年来&#xff0c;凭借快速高效、机动灵活、安全可靠、低成本等诸多优势&#xff0c;小型多旋翼无人机逐渐成为一些航测项目作业的新利器。 千…

Redis——渐进式遍历和数据库管理命令

介绍 如果使用keys * 这样的操作&#xff0c;将Redis中所有的key都获取到&#xff0c;由于Redis是单线程工作&#xff0c;这个操作本身又要消耗很多时间&#xff0c;那么就会导致Redis服务器阻塞&#xff0c;后续的操作无法正常执行 而渐进式遍历&#xff0c;通过多次执行遍历…

【PowerQuery】PowerBI Pro账户的自动刷新

在数据和模型通过发布或者上传方式上传到PowerBI Pro中,如何来进行数据刷新呢?数据源依然在本地,而数据模型已经发布到PowerBI Pro云端服务中。如果数据源更新,我们的模型如何进行自动刷新呢? PowerBI Pro如果需要基于本地数据源更新进行模型更新需要部署相应的数据网关服…

智能合约漏洞案例,Euler Finance 1.96 亿美元闪电贷漏洞分析

智能合约漏洞案例&#xff0c;Euler Finance 1.96 亿美元闪电贷漏洞分析 2023 年 3 月 13 日上午 08:56:35 UTC&#xff0c;DeFi 借贷协议 Euler Finance 遭遇闪电贷攻击。 Euler Finance 是一种作为无许可借贷协议运行的协议。其主要目标是为用户提供各种加密货币的借贷便利。…

斯里兰卡投资促进部中国招商大使率考察团到访深兰科技

9月13日&#xff0c;来华访问的斯里兰卡投资促进部政府考察团&#xff0c;在斯里兰卡投资促进部中国招商大使吴克向的率领下&#xff0c;到访深兰科技集团&#xff0c;并与深兰科技集团董事副总裁刘园桂等进行了会谈。 考察团随行人员包括Sri Lanka Sithara Limited公司总裁Mr.…

VisualBox QA

出现提示注册表错误&#xff0c;或者之前正常&#xff0c;重启VisualBox后&#xff0c;VM运行失败时&#xff0c;可通过正确卸载VisualBox&#xff0c;然后使用注册表清理软件(CCleaner)清理注册表后&#xff0c;重装VisualBox&#xff0c;即会正常。&#xff08;一般用这个能解…

Unity WebGL 编译 报错: emcc2: error: ‘*‘ failed: [WinError 2] ϵͳ�Ҳ���ָ�����ļ���解决办法

文章目录 错误日志可能的原因及解决办法:导出路径不能有中文系统名(win)含有中文, 修改环境变量Temp和Tmp, 如下图:真正的原因: 杀毒软件删除了部分wasm相关文件,如: 错误日志 Building Library\Bee\artifacts\WebGL\build\debug_WebGL_wasm\build.js failed with output: emc…

【WFA】【Enhanced open】CT_OWE_DHgroup_STA_NoAssociation-AllGroupsRejected_10338_1

测试报告如下: Fail的关键log: 当连接到ap失败时,驱动程序将尝试连接到ap。如果ap仅支持Group 20,并且sta支持Group 19、20。sta将首先尝试Group 19,ap将通过状态代码77拒绝它。然后驱动程序将尝试连接Group 19的ap,仍然达到最大重试次数。那么sta将尝试第Group 20 。 …

刷一下算法

记录下自己的思路与能理解的解法,可能并不是最优解法,不定期持续更新~ 1.盛最多水的容器 给定一个长度为 n 的整数数组 height 。有 n 条垂线&#xff0c;第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线&#xff0c;使得它们与 x 轴共同构成的容器可以容…

2023-09-18 LeetCode每日一题(打家劫舍 III)

2023-09-18每日一题 一、题目编号 337. 打家劫舍 III二、题目链接 点击跳转到题目位置 三、题目描述 小偷又发现了一个新的可行窃的地区。这个地区只有一个入口&#xff0c;我们称之为 root 。 除了 root 之外&#xff0c;每栋房子有且只有一个“父“房子与之相连。一番侦…

【Vue入门】语法 —— 插值、指令、过滤器、计算属性、监听器

目录 一、模版语法 1.1 插值 1.1.1 文本 1.1.2 html解析 1.1.3 属性 1.1.4 表达式 1.2 指令 1.2.1 核心指令 1.2.3 动态参数 二、过滤器 2.1 局部过滤器 2.2 全局过滤器 三、计算属性 四、监听器 五、排座案例 小结&#xff1a;计算属性和监听属性的区别 一、模…