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

MyBatisPlus属性自动填充和乐观锁插件+查询删除操作+整合SpringBoot出现问题解决

属性字段自动填充

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

表: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{@Overridepublic void insertFill(MetaObject metaObject){this.setFieldValByName("createTime",new Date(),metaObject);}@Overridepublic 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{@Beanpublic 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);
//条件查询+分页
@PostMapping("findPageHospSet/{current}/{limit}")//参数:当前页,每页数量
public Result findPageHospSet(@PathVariable long current,@PathVariable long limit,@RequestBody(required=false) HospitalSetQueryVo hospitalSetQueryVo//通过json传递
){//创建page对象Page<HospitalSet> page = new Page<>(current,limit);//构建条件QueryWrapper<HospitalSet> wrapper = new QueryWrapper<>();String hosname = hospitalSetQueryVo.getHosname();String hoscode = hospitalSetQueryVo.getHoscode();if(!StringUtils.isEmpty(hosname)){wrapper.like("hosname",hospitalSetQueryVo.getHosname());}if(!StringUtils.isEmpty(hoscode)){wrapper.eq("hoscode",hosipitalSetQueryVo.getHoscode());}Page<HospitalSet> pageHospitalSet = hospitalSetService.page(page,wrapper);
}

在这里插入图片描述

将控制方法的get改为post
参数添加注解@RequestBody
在这里插入图片描述

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

SpringBoot+MyBatisPlus常见问题

一、启动时,报出找不到mapper的问题

因为mapper包下是一个是实现了BaseMapper接口的接口,其实现类需要动态创建

方式一:需要在启动类上添加@MapperScan(“指定mapper包位置”)

方式二:配置类

@Configuration
@MapperScan("com.michael.mapper")
public class myConfig{}
http://www.lryc.cn/news/188835.html

相关文章:

  • 软件测试/测试开发丨App自动化—CSS 定位与原生定位
  • c语言:通讯录管理系统(文件版本)
  • Android Studio 配置Git SVN忽略文件
  • 独享IP地址的层级划分和管理:打造稳定高效的网络架构
  • js中async的作用
  • 什么是信创测试?信创测试工具有哪些?
  • 健康医疗类APP在高需求快速发展背景下,商业化如何快速破局增收?
  • java开源商城免费搭建 VR全景商城 saas商城 b2b2c商城 o2o商城 积分商城 秒杀商城 拼团商城 分销商城 短视频商城
  • k8spod就绪检查失败
  • 【数据结构】链表详解
  • STM32使用HAL库驱动DS18B20
  • echarts折线图设置背景颜色
  • spring boot+ vue+ mysql开发的一套厘米级高精度定位系统源码
  • 【初试396分】西北工业大学827学长经验分享
  • 【Qt之信号和槽】对象多层嵌套后,高效使用信号和槽
  • 搬砖日记:vue2 用require引入图片项目编译失败
  • 国内外都可以使用的【免费AI工具】,实用性满满
  • 银河麒麟服务器x86安装ntp客户端,并配置成功可以同步时间
  • vue踩的坑:属性报undefined错误问题汇总
  • Ubuntu22.04.3安装教程
  • Vue2和Vue3的emit、props、watch等知识点对比
  • HTML 笔记:初识 HTML(HTML文本标签、文本列表、嵌入图片、背景色、网页链接)
  • 使用弹性盒子flex对html进行布局和动态计算视口高度
  • 华为云云耀云服务器L实例评测|华为云耀云服务器L实例评测用例(五)
  • uniapp-vue3微信小程序实现全局分享
  • Qt如何实现动态背景-视频背景
  • vue按键全屏和F11全屏共存
  • springboot就业信息管理系统springboot32
  • 深入探讨芯片制程设备:从原理到实践
  • Vuex的简介以及入门案例