Mybatis-Plus-快速整合

Mybatis-Plus

依赖
  • 依赖选择

    <!-- 最新版本 -->
    <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.5</version>
    </dependency>
    
配置
分页
  • 分页拦截器配置

    @Configuration
    @MapperScan("scan.your.mapper.package")
    public class MybatisPlusConfig {/*** 添加分页插件*/@Beanpublic MybatisPlusInterceptor mybatisPlusInterceptor() {MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));//如果配置多个插件,切记分页最后添加//interceptor.addInnerInterceptor(new PaginationInnerInterceptor()); 如果有多数据源可以不配具体类型 否则都建议配上具体的DbTypereturn interceptor;}
    }
    
连接
  • 连接配置

    spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/redis_api?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC&useServerPrepStmts=trueusername: rootpassword: root # mybatis-plus 配置
    mybatis-plus:global-config:db-config:table-underline: falseconfiguration:map-underscore-to-camel-case: truelog-impl: org.apache.ibatis.logging.stdout.StdOutImpltype-aliases-package: com.example.redisapi.domainmapper-locations: classpath:com/example/redisapi/mapper/*Mapper.xml
自动填充
  • 实现

    @Slf4j
    @Component
    public class MyMetaObjectHandler implements MetaObjectHandler {@Overridepublic void insertFill(MetaObject metaObject) {log.info("start insert fill ....");// 或者this.strictInsertFill(metaObject, "createTime", () -> LocalDateTime.now(), LocalDateTime.class); // 起始版本 3.3.3(推荐)   }@Overridepublic void updateFill(MetaObject metaObject) {log.info("start update fill ....");this.strictUpdateFill(metaObject, "updateTime", () -> LocalDateTime.now(), LocalDateTime.class); // 起始版本 3.3.3(推荐)  }
    }
    
  • 实体类字段配置

    @TableName("sys_user")
    public class User {@TableId(value="id",type=IdType.AUTO)private Long id;private String name;private Integer age;private String email;@TableField(.. fill = FieldFill.INSERT_UPDATE)private LocalDateTime createTime;@TableField(.. fill = FieldFill.INSERT)private LocalDateTime updateTime;
    }
    
  • 框架自带,用于说明

    public enum FieldFill {/*** 默认不处理*/DEFAULT,/*** 插入填充字段*/INSERT,/*** 更新填充字段*/UPDATE,/*** 插入和更新填充字段*/INSERT_UPDATE
    }
    
Mapper
  • 实现方式

    public interface UserMapper extends BaseMapper<User> {}
    
Service
  • 接口

    public interface LoginService {ResultVO<String> login(String username, String password) throws JsonProcessingException;
    }
  • 实现类方式

    @Service
    public class LoginServiceImpl extends ServiceImpl<LoginMapper, Login>implements LoginService {}
    
主键自增配置
  • 在实体类的id列标注

    @TableName("sys_user")
    public class User {@TableId(value="id",type=IdType.AUTO)private Long id;private String name;private Integer age;private String email;
    }
    

    注意: 如果出现配置了数据库的自动增长,出现一段很长的数据时,需要通过show create table xxx,先备份原有的数据,这时,在表结构上可能会出现自增的起始id值,只要将这个值删除即可,就会按照数据库表中的最后一个值进行数据自增。

逻辑删除
  • 数据库字段id_deleted

  • 实体类字段通过注解映射

    @TableName("sys_user")
    public class User {@TableId(value="id",type=IdType.AUTO)private Long id;private String name;private Integer age;private String email;@TableLogic@TableField("is_deleted")private Integer deleted;
    }
    
分页实现
  • 自定义mapper方法实现分页

    • mapper

      IPage<UserVo> selectPageVo(IPage<?> page, Integer state);
      // or (class MyPage extends Ipage<UserVo>{ private Integer state; })
      MyPage selectPageVo(MyPage page);
      // or
      List<UserVo> selectPageVo(IPage<UserVo> page, Integer state);
      
    • xml

      <!-- 根据mapper 的返回,会自动拼接 limit -->
      <select id="selectPageVo" resultType="xxx.xxx.xxx.UserVo">SELECT id,name FROM user WHERE state=#{state}
      </select>
      
  • 调用方法

    @Override
    public ResultVO listProducts(ProductVO productVO) {LambdaQueryWrapper<Products> queryWrapper = new LambdaQueryWrapper<>();// 1: 名称queryWrapper.like(productVO.getName() != null, Products::getName, productVO.getName());queryWrapper.orderByAsc(Products::getPrice);// 这两部是实现分页的核心Page<Products> productsPage = new Page<>(productVO.getPageNum(), productVO.getPageSize());// pageInfo 是分页后的结果,用于直接返回到前端IPage<Products> pageInfo = productsMapper.selectPage(productsPage, queryWrapper);if (pageInfo != null) {return ResultVO.success("商品列表获取成功", pageInfo);}return ResultVO.fail("获取商品列表失败");
    }
    

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

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

相关文章

易毅出席成套低温烘干装备在发酵行业的节能创新应用

演讲嘉宾&#xff1a;易毅 总经理 广东芬蓝环境科技有限公司 演讲题目&#xff1a;成套低温烘干装备在发酵行业领域的节能创新应用 会议简介 “十四五”规划中提出&#xff0c;提高工业、能源领城智能化与信息化融合&#xff0c;明确“低碳经济”新的战略目标&#xff0c;热…

Unity2023.1.19_Socket-TCP_ 服务端与客户端通讯基础

Unity2023.1.19_Socket-TCP_ 服务端与客户端通讯基础 目录 Unity2023.1.19_Socket-TCP_ 服务端与客户端通讯基础

python-分享篇-根据出生日期判断你的星座出生日期判断生肖

文章目录 根据出生日期判断你的星座出生日期判断生肖 根据出生日期判断你的星座 sdate[20,19,21,20,21,22,23,23,23,24,23,22] # 星座判断列表 conts [摩羯座,水瓶座,双鱼座,白羊座,金牛座,双子座,巨蟹座,狮子座,处女座,天秤座,天蝎座,射手座,摩羯座] signs[♑,♒,♓,♈,♉…

测试计划(详细版)

测试计划Testing plan&#xff0c;描述了要进行的测试活动的范围、方法、资源和进度的文档&#xff1b;是对整个信息系统应用软件组装测试和确认测试。 [1] 它确定测试项、被测特性、测试任务、谁执行任务、各种可能的风险。测试计划可以有效预防计划的风险&#xff0c;保障计…

JPEG support not enabled.

报错&#xff1a; ECCODES ERROR : JPEG support not enabled. ECCODES ERROR : unable to get values as double array (Functionality not enabled) ECCODES ERROR : Unable to create iterator bFunctionality not enabled 在linux中运行python代码的时候报错了&…

Baumer工业相机堡盟工业相机如何联合GAPI SDK和OpenCV实现相机图像将图像转换为Mat格式再转为Bitmap图像进行显示(C#)

Baumer工业相机堡盟工业相机如何联合GAPI SDK和OpenCV实现相机图像将图像转换为Mat图像格式再转为Bitmap图像进行显示&#xff08;C#&#xff09; Baumer工业相机Baumer工业相机的图像转换为OpenCV的Mat图像的技术背景代码分析第一步&#xff1a;先引用OpenCV库第二步&#xff…

贪心 Leetcode 56 合并区间

合并区间 Leetcode 56 学习记录自代码随想录 以数组 intervals 表示若干个区间的集合&#xff0c;其中单个区间为 intervals[i] [starti, endi] 。请你合并所有重叠的区间&#xff0c;并返回 一个不重叠的区间数组&#xff0c;该数组需恰好覆盖输入中的所有区间 。 示例 1…

C++的继承和多态

继承和多态 继承继承的权限继承的子父类访问派生类的默认成员函数菱形继承&#xff08;C独有&#xff09;【了解】虚拟继承什么是菱形继承&#xff1f;菱形继承的问题是什么&#xff1f;什么是菱形虚拟继承&#xff1f;如何解决数据冗余和二义性的继承和组合的区别&#xff1f;…

揭秘Android Tombstone:崩溃位置的秘密研究-Crash Location

由于一些工作原因&#xff0c;最近对Android系统发生crash的Tombstone展开了一定的研究。 这里我谈一下关于对于Android Libstagefright 整数溢出漏洞的crash Tombstone的研究。看一下在包含整数溢出功能的MP4文件从PC传输进Android的时候造成的Tombstone0_0。 1、研究头部信…

双通道 40V 160mΩ车规级高侧电源开关带诊断功能反向电池保护功能

概述 PC8916是双通道、高功率具有集成NMOS功率FET的开关&#xff0c;以及电荷泵。该设备集成了高级 保护功能&#xff0c;例如负载电流限制&#xff0c;通过功率限制进行过载主动管理带可配置闭锁的超温停机。全面诊断和高精度电流感应这些功能实现了对负载的智能控制。有源漏…

[C++] 统计程序耗时

一、简介 使用clock()函数记录程序开始、结束时间戳。然后将开始结束时间戳差除以CLOCKS_PER_SEC得到程序的耗用的时间&#xff08;秒数&#xff09;。 二、代码示例 #include <iostream> #include <time.h> #include <math.h> int main(int, char **) {clo…

JetPack 5.1编译mish_cuda

1.查看jetpack版本:sudo jtop 自带的就有cuda11.4和cudnn8.X以及python3.8,我的cudnn就没有是后期自己安装的 2.安装torch PyTorch for Jetson - Announcements - NVIDIA Developer Forums 选择对应的cuda版本和torch版本,我下载的是:torch-2.1.0a0+41361538.nv23.06-cp…

ETL数据仓库的使用方式

一、ETL的过程 在 ETL 过程中&#xff0c;数据从源系统中抽取&#xff08;Extract&#xff09;&#xff0c;经过各种转换&#xff08;Transform&#xff09;操作&#xff0c;最后加载&#xff08;Load&#xff09;到目标数据仓库中。以下是 ETL 数仓流程的基本步骤&#xff1a…

2024中国5G随身WiFi十大品牌排行榜,20245G随身口碑排行榜,5G随身WiFi2024最新款!5G随身WiFi推荐测评

【中国品牌网中国3C质量评测中心权威榜单联合发布】 第一名&#xff1a;格行5G随身WiFi&#xff1a; 优点&#xff1a;随身WiFi行业的头部和领跑品牌&#xff0c;15年专业物联网行业经验&#xff0c;格行在技术研发、产品创新和客户服务方面具有很高的口碑&#xff0c;被业内…

通过一篇文章让你了解数据结构和算法的重要性

通过一篇文章让你了解数据结构和算法的重要性 前言一、 什么是数据结构&#xff1f;二、什么是算法&#xff1f;三、数据结构和算法的重要性在校园招聘的笔试中&#xff1a;在校园招聘的面试中&#xff1a;在未来的工作中&#xff1a; 四、如何学好数据结构和算法4.1 死磕代码&…

基于React全栈Sora AI视频案例展示项目

花了一天时间基于React Next全栈开发的Sora AI 演示项目 Preview: https://sora.langchat.cn/ Github&#xff1a;https://github.com/tycoding/lang-sora 欢迎大家star、fork呀&#xff01; 这是一套完整的React & Next.js项目&#xff0c;包含前后端交互、路由、数据库…

crc16计算

crc16计算&#xff0c;以生成式G(x)x16x15x21,为例 1、函数如下&#xff1a; //crc&#xff1a;G(x) x16x15x21 #define POLY 0x8005 //对应的生成式的多项式&#xff0c;可以查&#xff08;在在线计算crc工具下查&#xff09; unsigned short crc16_2(unsigned char *da…

CBAM注意力机制详解(附pytorch复现)

简介 论文原址&#xff1a;1807.06521.pdf (arxiv.org) CBAM&#xff08;Convolutional Block Attention Module&#xff09;是一种卷积神经网络模块&#xff0c;旨在通过引入注意力机制来提升网络的表示能力。CBAM包含两个顺序子模块&#xff1a;通道注意力模块和空间注意力…

算法项目的合作流程

算法项目的合作流程通常包括以下几个关键步骤&#xff0c;以上是算法项目合作的基本流程&#xff0c;具体项目可能会根据实际情况进行调整和补充。在整个项目过程中&#xff0c;良好的沟通、协作和团队合作至关重要&#xff0c;能够确保项目按时高质量地完成。北京木奇移动技术…

回归啦!!!

消失的日子在实习&#xff0c;今天最后一天了来看看自己的学习日志&#xff0c;有没有可以和小伙伴交流的部分吧&#xff01; 目录 一、产品one ①简介 ②底层原理 ③知识点一 作用一&#xff1a;日志采集 作用二&#xff1a;实时监测 作用三&#xff1a;规则匹配 作用…