SpringBoot整合Mybatis-Plus

SpringBoot整合MybatisPlus(详细版) ​MybatisPlus是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。它继承了 MyBatis 的所有特性,并且加入了强大的功能,例如自动填充、逻辑删除、乐观锁、性能分析等。 阅读详情

简介

MyBatis-Plus (opens new window)(简称 MP)是一个 MyBatis (opens new window)的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。

特性

无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑
损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作
强大的 CRUD 操作:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求
支持 Lambda 形式调用:通过 Lambda 表达式,方便的编写各类查询条件,无需再担心字段写错
支持主键自动生成:支持多达 4 种主键策略(内含分布式唯一 ID 生成器 - Sequence),可自由配置,完美解决主键问题
支持 ActiveRecord 模式:支持 ActiveRecord 形式调用,实体类只需继承 Model 类即可进行强大的 CRUD 操作
支持自定义全局通用操作:支持全局通用方法注入( Write once, use anywhere )
内置代码生成器:采用代码或者 Maven 插件可快速生成 Mapper 、 Model 、 Service 、 Controller 层代码,支持模板引擎,更有超多自定义配置等您来使用
内置分页插件:基于 MyBatis 物理分页,开发者无需关心具体操作,配置好插件之后,写分页等同于普通 List 查询
分页插件支持多种数据库:支持 MySQL、MariaDB、Oracle、DB2、H2、HSQL、SQLite、Postgre、SQLServer 等多种数据库
内置性能分析插件:可输出 Sql 语句以及其执行时间,建议开发测试时启用该功能,能快速揪出慢查询
内置全局拦截插件:提供全表 delete 、 update 操作智能分析阻断,也可自定义拦截规则,预防误操作

整合

1、引入Mybatis-Plus的jar依赖

        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.4.0</version>
        </dependency>

使用Mybatis-Plus的依赖可以不用在引入mybabtis和jdbc的的依赖

2、创建一个实体类School

/**
* 使用Mybatis-Plus,关联的实体类的字段,必须要在数据表中都存在
* 如果不存在可以,可以使用@TableField(exist = false)标注
*/
//@TableName("")对应数据库中表的名称
public class School implements Serializable {
    @TableId(value="school_id",type = IdType.AUTO ) //标记他是主键自增,不然在使用根据主键操作方法和添加的时候会报错
	private Integer schoolId;
	private String schoolName;
	
    /**
     * 用来表示,该属性在表中不存在,如果表中不存在,并且没有此注解,会报错
     */
    @TableField(exist = false)
    private String name;
	//省略getter和setter方法
}

3、创建一个Mapper继承BaseMapper,Mapper 继承该接口后,无需编写 mapper.xml 文件,即可获得CRUD功能

@Mapper
public interface SchoolMapper extends BaseMapper<School> {
}

4、创建service接口继承IService(顶级的service)

public interface SchoolService extends IService<School> {
}

5、创建一个实现service接口的impl并继承ServiceImpl

@Service
public class SchoolServiceImpl extends ServiceImpl<SchoolMapper, School> implements SchoolService {
}

6、创建一个Controller

@Controller
public class SchoolController {

    @Autowired
    private SchoolService schoolService;

    @RequestMapping(value = "/test",produces = "application/json")
    @ResponseBody
    public List<School> test(){
        List<School> schoolList = schoolService.list();
        System.out.println(schoolList);
        return schoolList;
    }
}

这样就可以打印出数据表中的所有的数据了

分页查询

1、首先要写一个config类

@Configuration
public class MyBatisConfig {

    /**
    * 分页拦截器
    */
    @Bean
    public MybatisPlusInterceptor paginationInterceptor(){
        MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
        PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor();
        mybatisPlusInterceptor.addInnerInterceptor(paginationInnerInterceptor);
        return mybatisPlusInterceptor;
    }
}

2、写一个controller测试一下

@Controller
public class SchoolController {

    @Autowired
    private SchoolService schoolService;

    @RequestMapping(value = "/test",produces = "application/json")
    @ResponseBody
    public Page<School> test(){
        /**
         * current:当前页
         * size:几条数据
         */
        Page<School> school = new Page<>(2,3);
        Page<School> page = schoolService.page(school,null);
        return page;
    }
}

结果如下图
在这里插入图片描述

自动填充

开发中,如果每一条数据的添加时间和修改时间,都需要手动的设置的化这样会很影响开发的效率,所以可以使用自动填充,当然数据库也可以设置默认值,但这种方式不推荐使用。

1、在实体类中需要自动填充的字段上添加 @TableField 注解

    //自动填充策略
    @TableField(fill = FieldFill.INSERT)
    private Date createDate;
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Date updateDate;

2、写一个组件,注入到ioc容器中

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

    @Override
    public void updateFill(MetaObject metaObject) {
        this.setFieldValByName("updateDate",new Date(),metaObject);
    }
}

然后重新启动项目,就不在需要每次添加修改的时候设置时间了

逻辑删除

企业开发的,为了防止数据的丢失,一般都采用逻辑删除,只是使用一些限定条件,让一部分人看不见,并不是真正的物理删除。

1、在实体类中需要逻辑删除的字段上添加 @TableLogic 注解

    @TableLogic //逻辑删除
    private Boolean isDelete;

2、注入bean 注意:在mybatis-plus版本3.1.1之后就不在需要注入这个bean了

    @Bean
    public ISqlInjector sqlInjector() {
        return new LogicSqlInjector();
    }

3、配置application.properties文件

# 配置逻辑删除
mybatis-plus.global-config.db-config.logic-delete-value=1
mybatis-plus.global-config.db-config.logic-not-delete-value=0

4、以后执行删除的方法就是逻辑删除,改变的只是你设置逻辑删除的那个字段的值,使用查询方法的时候,也不会查询出来逻辑删除过的数据

SpringBoot快速教程四整合Mybatis-plus SpringBoot3版本整合最新版Mybatis-plus的教程方便自己日常无缝迁移,那么来了,本篇教程就是基于SpringBoot3.3.4整合最新版的Mybatis-plus的3.5.7的SpringBoot3专属版本,希望大家可以和之前的Mybatis做一下对比,俗话说,没有对比,就没有伤害! 阅读详情

相关推荐

【Spring Boot】整合Mybatis与Mybatis-plus

介绍Spring Boot如何整合Mybatis和Mybatis-plus

Decade0712的博客 2251

SpringBoot集成MyBatis-plus

MyBatis-Plus (opens new window)(简称 MP)是一个 MyBatis (opens new window)的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。说明:QueryWrapper(LambdaQueryWrapper) 和 UpdateWrapper(LambdaUpdateWrapper) 的父类用于生成 sql 的 where 条件, entity 属性也用于生成 sql 的 where 条件。

qq_43548590的博客 9407

SpringBoot 整合mybatis,mybatis-plus

SpringBoot 整合mybatis,mybatis-plus

congge_study的博客 2万+

Spring Boot整合MyBatis-Plus的详细讲解

定义:MyBatis Plus是一个MyBatis的增强工具,在MyBatis的基础上只做增强不做改变,旨在简化开发、提高效率。官网或Redirect。

C1226786216的博客 3453

Python实战:高效稳定采集微信视频号评论的API爬虫方案

网络爬虫是数据采集领域的核心技术,其原理是通过程序模拟浏览器行为,向目标服务器发送HTTP请求并解析响应数据,从而自动化获取网页或接口中的信息。这项技术的核心价值在于能够高效、批量化地收集公开数据,为市场分析、舆情监控和竞品研究提供数据基础。在社交媒体分析、电商价格监控等应用场景中,爬虫技术尤为重要。针对微信视频号这类动态加载的复杂应用,传统的GUI自动化工具(如影刀RPA)常面临性能瓶颈和风控挑战。本文聚焦于通过Python实现**无感采集**,直接与后端**API接口**交互,构建稳定高效的评论数据采集

weixin_30899023的博客 328

GPU微架构演进分析--从SIMT到Scalar-Vector-Tensor计算的混合配比与调度

GPU架构经历了从专用计算模块到统一可编程处理器的演进。传统GPU面临专用电路配比难题,Nvidia Tesla架构通过引入可编程多线程处理器实现图形与计算的统一。Fermi架构进一步向计算倾斜,随后的架构陆续加入Tensor Core等专用单元。AI时代促成了从图形处理主导向AI计算的转变,形成了Scalar+Vector+Tensor的混合计算范式。SIMT调度重要性降低,CUDA面临新挑战,RISC-V等架构可能带来新机遇。

ChipCamp的博客---https://chipcamp.blog.youkuaiyun.com/ 915

最新版SpringBoot整合Mybatis-Plus超详细教程,亲测有效~

Mybatis-Plus(简称MP)是一个基于MyBatis的增强工具库,它简化了与数据库的交互操作并提供了一系列增强功能,使开发者能够更加方便快捷地进行数据库访问。以下是 Mybatis-Plus 的一些主要特性和功能:简化的 CRUD 操作:Mybatis-Plus 提供了通用的 CRUD 接口和方法,可以实现常见的数据库操作,如插入、修改、删除和查询,大大减少了编写重复的SQL语句和Mapper接口的工作量。自动化的分页查询:Mybatis-Plus 内置了分页插件,可以方便地进行分页查询操作。

weixin_74069778的博客 2万+

无线网卡选购指南:哪些型号支持Kali Linux的监听模式?附免驱动网卡推荐

本文详细解析了如何在Kali Linux下选购支持监听模式的无线网卡。核心在于选择兼容的芯片组,如Atheros AR9271和Ralink RT3070等经典型号,并提供了免驱动网卡推荐与实战配置指南,帮助安全研究人员和爱好者快速搭建无线测试环境。

wind6的博客 1553

Springboot整合Mybatis Plus【超详细】

springboot整合mybatis plus

玩转Java 1万+

Matlab子图排版终极指南:从tight_subplot到tiledlayout的实战对比

本文深入对比Matlab中两大子图排版工具:社区经典函数tight_subplot与官方现代布局管理器tiledlayout。针对默认subplot产生的子图间距与边缘距离问题,详细解析两者的设计哲学、参数控制与实战应用,帮助用户根据版本与需求选择最佳方案,实现高效、精确且美观的多子图排版。

weixin_29048309的博客 360

将AAL图谱对应到Yeo7大网络中【原理,代码分析】

本文介绍了将AAL2图谱映射到Yeo7大功能网络的方法。通过整合皮层(Yeo2011)、小脑(Buckner2011)和纹状体(Choi2012)三个区域的功能网络图谱,采用投票机制确定每个AAL区域的网络归属。具体步骤包括:1)统计每个AAL区域体素在各网络图谱中的分布;2)选择体素数量最多的网络作为该区域的最终标签。该方法实现了从解剖结构到功能网络的映射,可获得120个AAL区域对应的7大功能网络标签。

yes666666的博客 2204

SpringBoot整合Mybatis-plus及用法

一、mybatis-plus简介: Mybatis-Plus(简称MP)是一个 Mybatis 的增强工具,在 Mybatis 的基础上只做增强不做改变,为简化开发、提高效率而生。这是官方给的定义,关于mybatis-plus的更多介绍及特性,可以参考mybatis-plus官网。那么它是怎么增强的呢?其实就是它已经封装好了一些crud方法,我们不需要再写xml了,直接调用这些方法就行,就类似于JPA。并且3.X系列支持lambda语法,让我在写条件构造的时候少了很多的"魔法值",从代码结构上更简洁了.

qq_42281649的博客 7万+

大模型-高通qnn基础

提供较低级别、高度可定制的统一API,通过单独的库加速所有AI加速器核心上的AI模型, 可以直接用于针对特定的加速器核心或从流行的运行时(包括Qualcomm Neural Processing SDK、TensorFlow Lite和ONNX运行时)委派工作负载。一个支持异构计算、系统级配置的一体化SDK,旨在将AI工作负载引导到我们平台上的所有加速器核心。为开发人员提供灵活性,包括核心间协作支持和其他高级功能。是一个为训练好的神经网络模型提供高级量化和压缩技术的库。

点滴的岁月 4082

Spring Boot3整合MyBatis Plus

⛰️个人主页: 蒾酒🔥系列专栏:《spring boot实战》目录1.前置条件2.导坐标3.配置数据源4.mybatis-plus基础配置5.配置mapper扫描路径6.配置分页拦截器7.MyBatis Plus代码生成器整合1.导坐标2.编写代码生成逻辑8.整合Druid连接池已经初始化好一个spring boot项目且版本为3X,项目可正常启动初始化教程:新版idea创建spring boot项目-优快云博客https://blog.youkuaiyun.com/qq_62262918/article/

蒾酒的博客 8942

大模型推理中Prefill与Decode、KV Cache三者说明

Prefill 阶段对输入 Prompt 并行编码,一次性构建KV Cache,属于计算密集型任务。Decode 阶段逐 token 迭代生成,复用KV Cache避免重复计算,属于显存带宽密集型任务。KV Cache是自回归推理的核心基石,用显存换时间,实现两阶段衔接与高效生成。PD 分离通过任务解耦、异构硬件、异步调度、独立批处理,解决传统一体化推理的资源冲突与利用率低下问题,是当前云端大模型推理服务的主流工程优化方向。

a486259的博客 1482

Arduino ESP8266通过 RF433数据收发实验

Arduino ESP8266通过 RF433射频模块实现数据收发实验 写这篇文章,折腾了2天,在没有成功之前,一直在摸索和采坑当中,不要问我黑暗和黎明之间有多长。开发很多时候只问结果,不问过程的,在这里分享来之不易的结果,希望后面的人不要采坑,有成功的案例先河,后面与之相关的应用开发只需要套用模板修改即可实现。 实物搭建 RF433模块 我使用的是这个:nodemcu 本案例开发所使用到的库:RadioHead:http://www.airspayce.com/mikem/

perseverance51博客 3806

springboot整合mybatis-plus【详细版】

MyBatis-Plus(简称MP)是一个MyBatis的增强工具,旨在在MyBatis的基础上只做增强不做改变,以简化开发、提高效率。MyBatis-Plus保持了MyBatis原有的所有特性,同时增加了一些实用的功能,使得开发者能够更加便捷地进行数据库操作。主要用于指定表名,实现实体类与表名的绑定,作用于类上,适用于表名与实体类名称不统一的情况,统一的情况可以不用写。

m0_74825003的博客 1176

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

spring boot3整合mybatis-plus

配置mybatis-plus之属性自动填充。配置mybatis-plus分页插件。编写业务逻辑测试代码。

weixin_38716921的博客 5321

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

SpringBoot与mybatis整合以及mybatis-plus

springboot与mybatis整合以及代码自生成,数据库逆向生成插件配置,mybatis-plus相关配置

m0_57406300的博客 773

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

SpringBoot整合Mybatis-Plus 实战之Mybatis-Plus的一级缓存、二级缓存详解

前言 现在的JAVA行业,貌似已经是SpringBoot + SpringCloud 的天下了,早期的SSH,SSM框架已经老去,与SpringBoot相结合的JPA框架虽然省去了很多的增删改查sql,但是比较笨拙,在面对一些复杂多变的逻辑时常常力不从心,而相对应的Mybatis由于其高度的灵活性受到广大码农的欢迎。之前整合过了springboot+mybatis,前几天看到一个面试的问一个问题,Mybatis的一级缓存,二级缓存。我想这个应该也是一个重点吧,所以今天决定来详细解读一下神秘的一二级缓存。

爱吃早餐的程序员 1万+

Spring Boot 整合MyBatis 和 Spring Boot 整合MyBatis-Plus

1. MyBatis-Plus (简称MP)是一个MyBatis 的增强工具,在MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。2. 强大的CRUD 操作:内置通用Mapper、通用Service,通过少量配置即可实现单表大部分CRUD 操作,更有强大的条件构造器,满足各类使用需求。

业精于勤,荒于嬉 4114

【SpringBoot】SpringBoot整合MyBatis-Plus

SpringBoot 整合 MyBatis-Plus

liuwanqing233333的博客 1034

SpringBoot整合MyBatis-plus

SpringBoot整合Mybatis自整理使用文档

dxq11的博客 1035

springboot整合mybatis以及mybatis-plus 开发

MyBatis最佳搭档,只做增强不做改变,为简化开发、提高效率而生。详细信息请看官方文档MyBatis-Plus 🚀 为简化开发而生。

m0_68041576的博客 1698
上一篇: git切换版本
下一篇: git分支
与黑夜为伍
博客等级 码龄7年 19粉丝 80原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值