MyBatisPlus属性自动填充和乐观锁插件+查询删除操作

news2024/11/14 3:52:13

属性字段自动填充

一、实体类和数据表添加两个字段(属性)

表:create_tiem/update_time
实体类:createTime/updateTime

二、实体类中属性进行注解添加

@TableField(fill=FieldFill.INSERT)
private Date createTime;

@TableField(fill=FieldFill.INSERT_UPDATE)
private Date updateTime;

三、创建实现MetaObjectHandler接口的类,并实现两个方法
一个方法添加执行,另一个方法修改执行

@Component
public class MyMetaObjectHandler implements MetaObjectHandler{
	
	@Override
	public void insertFill(MetaObject metaObject){
		this.setFieldValByName("createTime",new Date(),metaObject);
	}
	@Override
	public void updateFill(MetaObject metaObject){
		this.setFieldValByName("updateTime",new Date(),metaObject);
	}
}

乐观锁

一、在表中添加version字段,在实体类中添加version字段(Integer)

二、在实体类进行版本号操作属性上添加注解

@Version
private Integer version;

三、配置乐观锁插件

在启动类,或者单独新建一个config包下创建一个配置类

@Configuration
@MapperScan("com.michael.mapper")
public class MpConfig{
	
	@Bean
	public OptimisticLockerInterceptor optimisticLockerInterceptor(){
		return new OptimisticLockerInterceptor();
	}
}

============================================================

多个id批量查询

List<User> users = userMapper.selectBatchIds(Arrays.asList(1,2,3));

简单条件查询

Map<String,Object> columnMap = new HashMap<>();
columnMap.put("name","Jack");
columnMap.put("age",20);

List<User> users = userMapper.selectByMap(columnMap);

分页查询

①、配置分页插件配置类

@Bean
public PaginationInterceptor paginationInterceptor(){
	return new PaginationInterceptor();
}

②、编写分页代码,插件Page对象,传入两个对象,当前页和每页记录数

Page<User> page = new Page(1,3);
Page<User> userPage = userMapper.selectPage(page,null);//第二个参数为条件

long pages = userPage.getPages();//总页数
long current = userPage.getCurrent();//当前页
List<User> records = userPage.getRecords();//查询数据集合
long tobal = userPage.getTotal();//总记录数
boolean b = userPage.hasNext(); //当前是否有下一页
boolean b1 = userPage.hasPrevious();//当前是否有上一页

逻辑删除

①、数据表添加一个字段boolean类型deleted,实体类添加属性Integer类型deleted

@TableLogic
private Integer deleted;

②、application.properties配置文件中添加

以下配置为默认值,所以该配置可无

mybatis-plus.global-config.db-config.logic-delete-value=1
mybatis-plus.global-config.db-config.logic-not-delete-value=0

条件构造器

在这里插入图片描述

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.isNull("name").ge("age",12).isNotNull("email");//构造条件
int result = userMapper.delete(queryWrapper);

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

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

相关文章

复旦大学EMBA王世峰:坚持科技创造与品质,铸就“中国智造”梦!

当前&#xff0c;新能源产业呈现持续爆发式增长趋势&#xff0c;2023年《政府工作报告》对汽车行业提出“扩大消费绿色发展”的指导方向。动力电池是新能源汽车核心概念&#xff0c;对新能源汽车的性能和品质起着决定性作用。锂离子电池在电动汽车、电动飞行器、储能等领域的应…

Centos安装Jenkins官方方式安装教程

通过Jenkins官网方式安装&#xff0c;官网地址&#xff1a;Jenkins # 执行命令 sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo # 执行 sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io-2023.key # yum方…

设计模式 - 行为型模式:模板方法模式(概念 | 案例实现 | 优缺点 | 使用场景)

目录 一、行为型模式 1.1、模板方法模式 1.1.1、概念 1.1.2、案例实现 1.1.3、优缺点 1.1.4、使用场景 一、行为型模式 一句话概括行为型模式 行为型模式&#xff1a;类或对象间如何交互、如何划分职责&#xff0c;从而更好的完成任务. 1.1、模板方法模式 1.1.1、概念 …

Go 语言中的反射

今天主要来聊聊 Go 语言中反射&#xff0c;希望对你有新的认知 虽然很多人使用 Go 语言有一定时间了&#xff0c;甚至有的使用了 1 年 2 年&#xff0c;然后对于 Go 语言中的反射还是模棱两可&#xff0c;使用起来的时候&#xff0c;心里也不是非常有底气 更有甚者&#xff0…

星际争霸之小霸王之小蜜蜂(十七)--究极体

系列文章目录 星际争霸之小霸王之小蜜蜂&#xff08;十六&#xff09;--狂奔的花猫 星际争霸之小霸王之小蜜蜂&#xff08;十五&#xff09;--剧将终场 星际争霸之小霸王之小蜜蜂&#xff08;十四&#xff09;--资本家的眼泪 星际争霸之小霸王之小蜜蜂&#xff08;十三&…

硬件测试(一):温循

一、定义&#xff1a; 温度循环试验&#xff0c;也称为热循环试验或高低温循环试验&#xff0c;是将试验样品暴露于预设的高低温交替的试验环境中所进行的可靠性试验。 温循作为自然环境的模拟&#xff0c;可以考核产品在不同环境条件下的适应能力&#xff0c;常用于产…

Cocos Creator3.8 项目实战(八)2D UI DrawCall优化详解(上)

游戏开发的朋友都知道&#xff0c;在游戏开发过程中&#xff0c;DrawCall 是我们优化性能的一个非常重要的指标&#xff0c;直接影响游戏的整体性能表现&#xff0c;DrawCall数量越多&#xff0c;帧率会降低&#xff0c;能明显感觉到卡顿。 那今天我们就来聊一聊&#xff0c;2D…

3D 生成重建005-NeRF席卷3D的表达形式

3D生成重建005-NeRF席卷3D的表达形式 文章目录 0 论文工作1 论文方法1.1 体渲染1.2 离散积分1.3位置编码1.4分层采样1.5 影响 2 效果 0 论文工作 NeRF(神经辐射场技术)最早2020年提出用于新视图合成任务&#xff0c;并在这个领域取得了优秀的效果。如下图所示&#xff0c;受到…

JAVA 自定义注解,实现数据脱敏处理

1&#xff1a;自定义注解 /*** 脱敏注解**/ Retention(RetentionPolicy.RUNTIME) Target(ElementType.FIELD) JacksonAnnotationsInside JsonSerialize(using SensitiveSerialize.class) public interface Sensitive {/*** 脱敏数据类型*/SensitiveTypeEnum type();}2&#x…

怎么在图片上加logo?

怎么在图片上加logo&#xff1f;在工作中我们经常需要给图片添加logo&#xff0c;例如公司的产品图片在对外发布时需要添加公司的logo&#xff0c;这样的做的目的主要有以下目的&#xff1a; ① 品牌推广&#xff1a;将品牌的logo添加到图片中可以增加品牌曝光度&#xff0c;并…

【Rust】Rust环境配置与语法基础

&#x1f60f;★,:.☆(&#xffe3;▽&#xffe3;)/$:.★ &#x1f60f; 这篇文章主要介绍Rust环境配置与语法基础。 学其所用&#xff0c;用其所学。——梁启超 欢迎来到我的博客&#xff0c;一起学习&#xff0c;共同进步。 喜欢的朋友可以关注一下&#xff0c;下次更新不迷…

使用python连接Linux服务器发送指定命令

1.安装paramiko库 pip install paramiko2.使用paramiko库连接linux #导入库 import paramiko#创建一个sshclient对象 ssh paramiko.SSHClient()#允许连接不在know_host中的主机 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())#连接主机 ssh.connect(hostname&q…

nginx运行vue项目的dist文件

目录 1、安装nginx1.1、nginx常用命令1.2、将nginx注册为Windows系统服务 2、拷贝文件3、修改配置文件4、访问 1、安装nginx 官网下载&#xff1a;http://nginx.org/en/download.html 下载完之后直接解压即可 注&#xff1a;存放路径最好不要有中文、空格 1.1、nginx常用命令…

接口测试必备技能

接口测试&#xff0c;其实并没有那么可怕&#xff0c;但是作为测试人员也是必不可少的技能。 接口分为&#xff1a;内部接口和外部接口。 内部接口&#xff1a;是浏览器与服务器的接口。这个很容易理解&#xff0c;web开发一般分前端和后端&#xff0c;前端开发人员用html/css…

FusionCharts Suite XT v3.21 Crack

FusionCharts Suite XT v3.21 在圆环图和饼图上将图例和数据值显示为百分比或绝对值。 2023 年 10 月 4 日 - 15:15新版本 特征 通过允许用户将图例和数据值显示为百分比或绝对值&#xff0c;改进了圆环图和饼图。 添加了一个新功能&#xff0c;可以删除任何可能导致代码错误的…

MySQL-2(14000字详解)

一&#xff1a; 数据库约束 在 MySQL 中&#xff0c;约束是用于限制数据库表中数据的规则或条件。它们是为了保证数据的完整性和一致性。MySQL 提供了多种约束类型&#xff0c;包括 NOT NULL、UNIQUE、DEFAULT、PRIMARY KEY、FOREIGN KEY 和 CHECK等等 NOT NULL 约束&#xf…

【Redis】String内部编码方式

String内部编码方式 int: 8个字节的长整型embstr: 小于等于39个字节的字符串raw: 大于39个字节的字符串

Visual Studio 2022 修改字符集的方法

在射频识别技术课程实验过程中发现的报错问题&#xff0c;搞了半天才找到原因&#xff0c;是字符集设置有问题。下图为报错&#xff1a; 根本原因是默认的字符编码集是Unicode。 改成使用多字节字符集就好了。以下为修改方法。

Jetpack:003-布局中组件的对齐方式

文章目录 1. 概念介绍2. 使用方法2.1 行布局中的对齐方式2.2 列布局中对齐方式 3. 示例代码4. 内容总结 我们在上一章回中介绍了Jetpack中的页面和布局&#xff0c;本章回中将介绍 布局中组件的对齐方式。闲话休提&#xff0c;让我们一起Talk Android Jetpack吧 1. 概念介绍 …