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

MyBatisPlus实现增删改查

文章目录

  • MyBatisPlus实现增删改查
    • 基本操作
    • 分页查询
      • 配置分页插件

MyBatisPlus实现增删改查

实体类GkUser

package com.geekmice.springbootselfexercise.entity;import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.ToString;
import org.nustaq.serialization.annotations.Serialize;/*** (GkUser)实体类** @author pingmingbo* @since 2024-06-21 14:05:12*/
@TableName(value = "gk_user")
@Data
@ToString
@Serialize
public class GkUser{/*** 主键ID*/@TableId(type = IdType.AUTO)private Long id;/*** 姓名*/@TableField(value = "name")private String name;/*** 年龄*/@TableField(value = "age")private Integer age;/*** 邮箱*/@TableField(value = "email")private String email;}

数据层GkUserDao

package com.geekmice.springbootselfexercise.dao;import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.geekmice.springbootselfexercise.entity.GkUser;/*** (GkUser)表数据库访问层** @author pingmingbo* @since 2024-06-21 14:05:12*/
public interface GkUserDao extends BaseMapper<GkUser> {
}

映射文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.geekmice.springbootselfexercise.dao.GkUserDao"><resultMap type="com.geekmice.springbootselfexercise.entity.GkUser" id="GkUserMap"><result property="id" column="id" jdbcType="INTEGER"/><result property="name" column="name" jdbcType="VARCHAR"/><result property="age" column="age" jdbcType="INTEGER"/><result property="email" column="email" jdbcType="VARCHAR"/></resultMap></mapper>

业务层GkUserService

package com.geekmice.springbootselfexercise.service;import com.baomidou.mybatisplus.extension.service.IService;
import com.geekmice.springbootselfexercise.entity.GkUser;/*** (GkUser)表服务接口** @author pingmingbo* @since 2024-06-21 14:05:12*/
public interface GkUserService extends IService<GkUser> {}package com.geekmice.springbootselfexercise.service.impl;import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.geekmice.springbootselfexercise.dao.GkUserDao;
import com.geekmice.springbootselfexercise.entity.GkUser;
import com.geekmice.springbootselfexercise.service.GkUserService;
import org.springframework.stereotype.Service;/*** (GkUser)表服务实现类** @author pingmingbo* @since 2024-06-21 14:05:12*/
@Service("gkUserService")
public class GkUserServiceImpl extends ServiceImpl<GkUserDao, GkUser> implements GkUserService {
}

基本操作

package com.geekmice.springbootselfexercise.first;import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.geekmice.springbootselfexercise.SpringBootSelfExerciseApplication;
import com.geekmice.springbootselfexercise.dao.GkUserDao;
import com.geekmice.springbootselfexercise.entity.GkUser;
import com.geekmice.springbootselfexercise.service.GkUserService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;/*** @BelongsProject: spring-boot-self-exercise* @BelongsPackage: com.geekmice.springbootselfexercise.first* @Author: pingmingbo* @CreateTime: 2024-07-09  10:12* @Description: mybatisplus实现增删改查* @Version: 1.0*/
@SpringBootTest(classes = SpringBootSelfExerciseApplication.class)
@RunWith(SpringRunner.class)
@Slf4j
public class FirstTest {@ResourceGkUserDao gkUserDao;@ResourceGkUserService gkUserService;@Testpublic void t1() {// 初始数据// id  name age email// 1  Jone 18 test1@baomidou.com// 2  Jack 20 test2@baomidou.com// 3  Tom 28 test3@baomidou.com// 4  Sandy 21 test4@baomidou.com// 5  Billie 24 test5@baomidou.com// 1、查询GkUser gkUser = gkUserDao.selectById(1);log.info("1.1、根据主键id查询 gkUser : [{}]", gkUser);List<GkUser> gkUsers = gkUserDao.selectList(null);log.info("1.2、查询所有 gkUsers : [{}]", CollectionUtils.size(gkUsers));// todo 分页查询 通过分页插件PaginationInnerInterceptor实现// 批量查询List<Integer> list = new ArrayList(16);list.add(1);list.add(2);List<GkUser> batchUsers = gkUserDao.selectBatchIds(list);log.info("1.3、批量主键查询 batchUsers : [{}]", CollectionUtils.size(batchUsers));// 根据条件批量查询QueryWrapper<GkUser> queryWrapper = new QueryWrapper<>();queryWrapper.le("id", 2);List<GkUser> gkUsers1 = gkUserDao.selectList(queryWrapper);log.info("1.4、根据条件批量查询 gkUsers1 : [{}]", CollectionUtils.size(gkUsers1));// 2、增加GkUser insertGkUser = gkUserDao.selectById(6);if (Objects.isNull(insertGkUser)) {GkUser domain = new GkUser();domain.setAge(10);domain.setEmail("test6@baomidou.com");domain.setName("Rose");gkUserDao.insert(domain);}GkUser afterInsertGkUser = gkUserDao.selectById(6);log.info("2.1 添加数据 afterInsertGkUser : [{}]", afterInsertGkUser);// 3、修改GkUser updateGkUser = gkUserDao.selectById(6);GkUser domain = new GkUser();if (Objects.nonNull(updateGkUser)) {domain.setId(6L);domain.setAge(6);domain.setEmail("test66@baomidou.com");domain.setName("rose");gkUserDao.updateById(domain);log.info("3.1 更新一条数据 domain ");}System.out.println("aaa");UpdateWrapper<GkUser> singleUpdateWrapper = new UpdateWrapper<>();singleUpdateWrapper.lambda().in(GkUser::getId,list);singleUpdateWrapper.set("name","abc");gkUserService.update(singleUpdateWrapper);log.info("3.2 定制化修改");// 4、删除// 定制化条件删除QueryWrapper<GkUser> deleteWrapper = new QueryWrapper<>();deleteWrapper.lambda().le(GkUser::getId,1);gkUserService.remove(deleteWrapper);log.info("4.1 根据条件删除");gkUserService.removeById(2);log.info("4.2 根据主键删除");}
}

分页查询

配置分页插件

package com.geekmice.springbootselfexercise.config;import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;/*** @BelongsProject: spring-boot-self-exercise* @BelongsPackage: com.geekmice.springbootselfexercise.config* @Author: pingmingbo* @CreateTime: 2023-08-09  09:29* @Description: mybatis配置信息* @Version: 1.0*/
@Configuration
@MapperScan(value = "com.geekmice.springbootselfexercise.dao")
public class MybatisPlusConfig {/*** 分页插件配置*/@Bean(name = "mybatisPlusInterceptor")public MybatisPlusInterceptor mybatisPlusInterceptor (){MybatisPlusInterceptor interceeptor = new MybatisPlusInterceptor();interceeptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));return interceeptor;}}

如何使用

    Page<GkUser> gkUserPage = new Page<>(1,3);Page<GkUser> records = gkUserDao.selectPage(gkUserPage, null);log.info("records : [{}]" , records);

> Preparing: SELECT id,name,age,email FROM gk_user LIMIT ?
> Parameters: 3(Long)
<
Columns: id, name, age, email
<
Row: 3, Tom, 28, test3@baomidou.com
<== Row: 4, Sandy, 21, test4@baomidou.com
<== Row: 5, Billie, 24, test5@baomidou.com
<== Total: 3
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@67376bae]
2024-07-10 01:37:14.271 INFO 9164 — [ main] c.g.s.first.FirstTest : records : [com.baomidou.mybatisplus.extension.plugins.pagination.Page@135a8808]
2024-07-10 01:37:14.790 INFO 9164 — [ionShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown initiated…
2024-07-10 01:37:14.873 INFO 9164 — [ionShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown completed.

Process finished with exit code 0

相关文章:

MyBatisPlus实现增删改查

文章目录 MyBatisPlus实现增删改查基本操作分页查询配置分页插件 MyBatisPlus实现增删改查 实体类GkUser package com.geekmice.springbootselfexercise.entity;import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField;…...

【Rust】——不安全Rust

&#x1f4bb;博主现有专栏&#xff1a; C51单片机&#xff08;STC89C516&#xff09;&#xff0c;c语言&#xff0c;c&#xff0c;离散数学&#xff0c;算法设计与分析&#xff0c;数据结构&#xff0c;Python&#xff0c;Java基础&#xff0c;MySQL&#xff0c;linux&#xf…...

使机器人在执行任务时更加稳定

为了使机器人在执行任务时更加稳定&#xff0c;调整参数时需要考虑多个因素&#xff0c;如步态、速度、角度等。这些参数的调整需要基于实际环境、任务需求和机器人自身的物理特性。以下是一些具体的调整建议&#xff1a; 1. 调整步态和步高 gait_type3; step_height0.03;步态…...

FFmpeg学习(五)-- libswresample使用说明及函数介绍

libswresample Audio合成和重采样 libswresample库用来进行audio数据的合成和重采样操作。调用流程&#xff1a; 调用 swr_alloc 创建SwrContext结构体。设置SwrContext参数&#xff0c;有两种方法&#xff1a; 调用av_opt_set_xx函数逐项设置参数&#xff1b;swr_alloc_set_…...

车载视频监控管理方案:无人驾驶出租车安全出行的保障

近日&#xff0c;无人驾驶出租车“萝卜快跑”在武汉开放载人测试成为热门话题。随着科技的飞速发展&#xff0c;无人驾驶技术已逐渐从概念走向现实&#xff0c;特别是在出租车行业中&#xff0c;无人驾驶出租车的推出将为公众提供更为安全、便捷、高效的出行服务。 视频监控技…...

05STM32EXIT外部中断中断系统

STM32EXIT外部中断&中断系统 中断系统中断触发条件&#xff1a;中断处理流程和用途&#xff1a; STM32中断NVIC嵌套中断向量控制器基本结构NVIC基本结构NVIC优先级分组EXTI简介EXTI基本结构AFIO复用IO口EXTI内部框图旋转编码器简介硬件电路外设手册里的介绍NVIC中断使能寄存…...

MetaGPT和LangGraph对比

MetaGPT和LangGraph是两个不同的AI Agent框架&#xff0c;各有其特点和优势:MetaGPT: MetaGPT是一个多Agent协作框架&#xff0c;模拟软件公司的运作方式。它包含多个角色如产品经理、架构师、项目经理和工程师&#xff0c;每个角色都有特定的职责。MetaGPT采用对话模式&#…...

基于SpringBoot+Hadoop+python的物品租赁系统(带1w+文档)

基于SpringBootHadooppython的物品租赁系统(带1w文档) 基于SpringBootHadooppython的物品租赁系统(带1w文档) 物品租赁系统是电子、信息技术相结合&#xff0c;是一种必然的发展趋势。以互联网为基础&#xff0c;以服务于广大用户为目的&#xff0c;发展整体优势&#xff0c;扩…...

关于 RK3588刷镜像升级镜像”没有发现设备“ 的解决方法

若该文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/140287339 长沙红胖子Qt&#xff08;长沙创微智科&#xff09;博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV…...

docker 上传镜像到hub仓库

要将 Docker 镜像上传到 Docker Hub&#xff0c;你需要按照以下步骤操作&#xff1a; 登录 Docker Hub 首先&#xff0c;你需要登录到 Docker Hub。打开终端并运行以下命令&#xff1a;docker login系统会提示你输入 Docker Hub 的用户名和密码。 如果密码忘记可以token登录&a…...

查询(q_proj)、键(k_proj)和值(v_proj)投影具体含义

查询(q_proj)、键(k_proj)和值(v_proj)投影&#xff0c;这些投影是自注意力机制的核心组件&#xff0c;特别是在Transformer架构中。 让我们通过一个简化的例子来说明&#xff1a; import numpy as np# 假设输入维度是4&#xff0c;注意力头数是2 input_dim 4 num_heads 2 …...

超详细版阿里云控制台环境配置+数据库配置

目录 一、登录阿里云控制台二、xshell建立远程连接1.安装xshell2.查看公网IP3.新建会话重置密码 三、搭建环境1.安装宝塔面板2.打开宝塔面板 四、安装配置MySQL1.安装2.放行端口号3.新建数据库4.测试连接数据库 一、登录阿里云控制台 登录阿里云控制台&#xff0c;找到实例&am…...

Linux:Linux网络总结(附下载链接)

文章目录 下载链接网络问题综合问题访问一个网页的全过程&#xff1f;WebSocket HTTPHTTP基本概念GET与POSTHTTP特性HTTP缓存技术HTTP的演变HTTP1.1 优化 HTTPSHTTP与HTTPS有哪些区别&#xff1f;HTTPS解决了HTTP的哪些问题&#xff1f;HTTPS如何解决的&#xff1f;HTTPS是如何…...

Cxx Primer-CP-2

开篇第一句话足见作者的高屋建瓴&#xff1a;类型决定程序中数据和操作的意义。随后列举了简单语句i i j;的意义取决于i和j的类型。若它们都是整形&#xff0c;则为通常的算术意义。若它们都为字符串型&#xff0c;则为进行拼接操作。若为用户自定义的class类型&#xff0c;则…...

OpenCV距离变换函数distanceTransform的使用

操作系统&#xff1a;ubuntu22.04OpenCV版本&#xff1a;OpenCV4.9IDE:Visual Studio Code编程语言&#xff1a;C11 功能描述 distanceTransform是OpenCV库中的一个非常有用的函数&#xff0c;主要用于计算图像中每个像素到最近的背景&#xff08;通常是非零像素到零像素&…...

Service Mesh 是一种用于处理服务间通信的基础设施层

Service Mesh 是一种用于处理服务间通信的基础设施层&#xff0c;它通常与微服务架构一起使用&#xff0c;以提供诸如服务发现、负载均衡、熔断、监控、追踪和安全性等功能。Service Mesh 的一个流行实现是 Istio&#xff0c;它基于 Envoy 代理和 Kubernetes。 然而&#xff0…...

QML界面控件加载与显示顺序

一、QML界面控件加载顺序 QML在界面加载时的顺序和我们认知的有很大的不同&#xff0c;有时候会对我们获取参数以及界面实现造成很大的困扰 1、加载顺序 import QtQuick 2.12 import QtQml 2.12 import QtQuick.Window 2.12 import QtQuick.VirtualKeyboard 2.4Window {id: …...

C++从入门到起飞之——缺省参数/函数重载/引用全方位剖析!

目录 1.缺省参数 2. 函数重载 3.引⽤ 3.1 引⽤的概念和定义 3.2 引⽤的特性 3.3 引⽤的使⽤ 3.4 const引⽤ 3.5 指针和引⽤的关系 4.完结散花 个人主页&#xff1a;秋风起&#xff0c;再归来~ C从入门到起飞 个人格言&#xff1a;悟已往之不谏…...

tkinter-TinUI-xml实战(12)pip可视化管理器

引言 pip命令行工具在平常使用方面确实足够简单&#xff0c;本项目只是作为TinUI多界面开发的示例。 当然&#xff0c;总有人想用GUI版pip&#xff0c;实际上也有。不过现在&#xff0c;我们就来手搓一个基于python和TinUI&#xff08;tkinter&#xff09;的pip可视化管理器。…...

Java中标识符和关键字

1.标识符 public class HelloWorld{public static void main(String[] args){System.out.println("Hello,world");} }上述代码中在public class 后面的HelloWorld称为类名&#xff0c;main称为方法名&#xff0c;也可以将其称为标识符&#xff0c;即&#xff1a;在程…...

电子版pdf格式标书怎么加盖公章?

电子版PDF格式标书加盖公章的方法有多种&#xff0c;以下是一些常用的步骤和技巧&#xff1a; 一、手动插入图片法 打开PDF文档&#xff1a;首先&#xff0c;确保你已经安装了支持PDF编辑的软件&#xff0c;如Adobe Acrobat Reader DC、Foxit PDF Editor等。选择插入图片&…...

【开放集目标检测】Grounding DINO

一、引言 论文&#xff1a; Grounding DINO: Grounding DINO: Marrying DINO with Grounded Pre-Training for Open-Set Object Detection 作者&#xff1a; IDEA 代码&#xff1a; Grounding DINO 注意&#xff1a; 该算法是在Swin Transformer、Deformable DETR、DINO基础上…...

东莞酷得 PMS134应广8位OTP单片机

1、特性 通用 OTP 系列 不建议使用于 AC 阻容降压供电或有高 EFT 要求的应用。应广不对使用于此类应用而不达安规要求负责 工作温度范围:-20C~70C 1.2.系统特性 一个硬件 16位计数器 两个8位硬件 PWM生成器 三个11 位硬件 PWM生成器(PWMG0&#xff0c;PWMG1…...

[终端安全]-7 后量子密码算法

本文参考资料来源&#xff1a;NSA Releases Future Quantum-Resistant (QR) Algorithm Requirements for National Security Systems > National Security Agency/Central Security Service > Article Commercial National Security Algorithm Suite 2.0” (CNSA 2.0) C…...

uniapp 支付宝小程序 芝麻免押 免押金

orderStr参数如下&#xff1a; my.tradePay({orderStr:res, // 完整的支付参数拼接成的字符串&#xff0c;从 alipay.fund.auth.order.app.freeze 接口获取success: (res) > {console.log(免押成功);console.log(JSON.stringify(res),不是JOSN);console.log(JSON.stringify…...

Python爬虫教程第一篇

一、爬虫基础概念 1. 什么是爬虫 爬虫&#xff08;Spider&#xff0c;又称网络爬虫&#xff09;&#xff0c;是指向网站/网络发起请求&#xff0c;获取资源后分析并提取有用数据的程序。从技术层面来说&#xff0c;爬虫通过程序模拟浏览器请求站点的行为&#xff0c;把站点返…...

AI时代:探索个人潜能的新视角

文章目录 Al时代的个人发展1 AI的高速发展意味着什么1.1 生产力大幅提升1.2 生产关系的改变1.3 产品范式1.4 产业革命1.5 Al的局限性1.5.1局限一:大模型的幻觉 1.5.2 局限二&#xff1a;Token 2 个体如何应对这种改变?2.1 职场人2.2 K12家长2.3 大学生2.4 创业者 3 人工智能发…...

【Python学习笔记】Optuna + Transformer B站视频实践

【Python学习笔记】Optuna Transformer 实践 背景前摇&#xff08;省流可不看&#xff09;&#xff1a; 之前以泰坦尼克号数据集为案例&#xff0c;学习了Optuna的基本操作&#xff0c;为了进一步巩固知识和便于包装简历&#xff0c;决定找个唬人一点的项目练练手。 ————…...

【自动驾驶/机器人面试C++八股精选】专栏介绍

目录 一、自动驾驶和机器人技术发展前景二、C在自动驾驶和机器人领域的地位三、专栏介绍四、订阅需知 一、自动驾驶和机器人技术发展前景 随着人工智能、机器学习、传感器技术和计算能力的进步&#xff0c;自动驾驶和机器人的技术水平不断提升&#xff0c;使得它们更加智能、可…...

Unity中一键生成具有身体感知的虚拟人物动作

在虚拟现实(VR)和增强现实(AR)的浪潮中&#xff0c;如何让虚拟人物的动作更加自然、真实&#xff0c;已经成为一个重要课题。AI4Animation项目&#xff0c;一个由 Sebastian Starke 主导的开源框架&#xff0c;为Unity开发者提供了强大的工具集&#xff0c;以实现这一目标。本文…...