MyBatis-Plus
文章平均质量分 71
Archie_java
求知若饥,虚心若愚(stay hungry,stay foolish)
好记性不如烂笔头
展开
-
Mybatis-Plus分页查询
如果你想看代码,可以直接跳到代码区域,这里只是一些简单的说明,如果你想学习,建议可以看看这一块的任容。selectPage:根据 entity 条件,查询全部记录:根据 Wrapper 条件,查询全部记录在使用上面两个方法进行分页查询时,我们需要配置分页插件。这是只是在介绍SpringBoot的使用。注意:由于我们使用的 Spring Boot 项目,因此需要通过和@Bean注解来添加配置这一小结,我们主要是对mybatis-pluts 插件的分页功能的使用,做了简单介绍。原创 2023-11-03 23:42:57 · 774 阅读 · 0 评论 -
【Mybatis-plus】updateById()方法不能更新字段为null的原因及解决办法---@TableField(updateStrategy = FieldStrategy.ALWAYS)
在日常项目开发过程中,经常会使用Mybatis-plus的updateById()方法,快速将接收道德参数或者查询结果中原本不为null的字段更新为null,并且该字段在数据库中可为null,这个时候使用updateById()并不能实现这个操作,不会报错,但是对应的字段并没有更新为null。设置好了之后,在更新时就可以直接使用mybatis-plus中的updateById方法就可以成功将字段更新为null,但是这样做存在一定的弊端,就是当需要这样处理的字段比较多时,要给对应的字段都要添加上这样的注解。原创 2023-11-01 17:16:17 · 7804 阅读 · 1 评论 -
Mybatis-Plus 实体json互相转化; typeHandler的使用
JacksonTypeHandler可以兼容 MybatisPlus 的功能和满足 支持 MySQL JSON 解析。环境:spring boot项目 mybatis-plus作为持久层。实体类 TableName注解添加属性值。注:mybatis 会有所不同。原创 2023-09-10 16:22:23 · 1109 阅读 · 0 评论 -
MyBatis-Puls如何处理Json数据类型
MyBatis Puls中已经定义了三种处理方式:FastjsonTypeHandler,GsonTypeHandler,JacksonTypeHandler我们可以直接使用。异常:Data truncation: Cannot create a JSON value from a string with CHARACTER SET ‘binary’在对应的位置添加属性 autoResultMap = true和typeHandler = FastjsonTypeHandler.class即可。原创 2023-08-19 16:32:23 · 868 阅读 · 0 评论 -
SpringBoot - MyBatis-Plus使用详解(字段类型处理器TypeHandler)
(1)如果我们需要实现一个自定义的类型处理器,则需继承接口,接口作用是用于指定jdbc与java的数据类型间对应关系处理。// 保存操作,数据入库之前时数据处理 void setParameter(PreparedStatement ps , int i , T parameter , JdbcType jdbcType) throws SQLException;原创 2023-08-06 16:29:31 · 1923 阅读 · 0 评论 -
MybatisPlus 使用 saveOrUpdate 详解(慎用),及问题解决方法&mysql保存或更新 ON DUPLICATE KEY UPDATE
今天的想法是,要在插入数据库时,如果有某某一个主要字段的值重复,则不插入,否则则插入!看了一下mybatis-Plus是有这个saveOrUpdate 方法!原本使用save时是没有问题了,改成saveOrUpdate 用了一下就报错了。就是这个mybatisPlus不能找到哪个是主键字段,因为这个saveOrUpdate默认是根据主键执行操作的!所有需要在原本的实体类的主键头上,打个@TableId,如下,后面是对应数据库的字段,已经主键自动递增。原创 2023-07-08 11:33:58 · 25214 阅读 · 0 评论 -
Mybatis-Plus批量插入
使用mybatis-plus做数据批量插入时候,发现通常我们自定义mapper接口继承BaseMapper。然而BaseMapper中不提供批量插入方法,只有单条插入方式。那如何批量插入呢?原创 2023-06-10 16:07:42 · 10157 阅读 · 0 评论 -
详解MybatisPlus中@TableLogic逻辑删除注解的使用
如果数据库字段使用 datetime,逻辑未删除值和已删除值支持配置为字符串 null,另一个值支持配置为函数来获取值如now()@TableLogic 注解将会在 update 语句的 where 条件后追加条件,防止更新到已删除数据。@TableLogic 注解将会在 select 语句的 where 条件添加条件,过滤掉已删除数据。上面代码中,使用 @TableLogic 注解将 deleted 成员变量指定为逻辑删除字段。sql 是一个更新语句,这是因为我们使用了逻辑删除,而不是物理删除。原创 2023-06-10 16:03:35 · 10610 阅读 · 1 评论 -
MybatisPlus中and和or的使用&MybatisPlus遇到的and和or优先级的问题处理
1 你可以让他打印SQL语句,这样你就知道知道的SQL了2 我遇到的情况是不报错,不打印SQL,那只能DEBUG3 手写SQL在mapper中也行一. 简单无优先级连接(即无括号的sql语句)简单来说,两个子条件间默认and与连接,若两个之间显式写出or()则or或连接.与连接 and()或连接 or()二. 复杂有优先级的的连接1 : 0);))) . . .;原创 2023-04-22 23:07:13 · 5072 阅读 · 0 评论 -
解决用MybatisPlus修改字段时会自动忽略传值为null的字段
我们使用mybatis-plus框架的时候会产生一个很尴尬的情况,在使用mybatis-plus的自带封装的update的方法的时候,如果你想要修改某个字段为null值,则会自动忽略修改你这个字段,导致这个字段还是原来未修改前的值。2.重写mybatisPlus封装的update的方法,在需要传null值的字段加上以下操作,这是从其他的博文中找到的,自己没试过。综上所述,第一种方法更加实用,但如果有产品硬性要求未修改这个字段,值不能为null时,建议用第二中方法进行处理。原创 2023-03-27 23:33:12 · 3716 阅读 · 0 评论 -
Mybatis-Plus字段策略FieldStrategy详解
Mybatis-Plus字段策略FieldStrategy的作用主要是在进行新增、更新时,根据配置的策略判断是否对实体对象的值进行空值判断,如果策略为字段不能为空,则不会对为空的字段进行赋值或更新。同样,在进行where条件查询时,根据whereStrategy策略判断是否对字段进行空值判断,如果策略为字段不能为空,则为空的字段不会作为查询条件组装到where条件中。三个配置,对应三种使用场景在insert操作时的字段策略,是否进行空值判断,插入空值。原创 2022-11-28 18:28:19 · 5125 阅读 · 0 评论 -
使用mybatis-plus来自定义排序
在启动类上加了@MapperScan(“com.example.mapper”)原创 2022-10-15 23:55:14 · 1624 阅读 · 0 评论 -
MyBatis-Plus updateById方法更新不了空字符串/null解决方法
因为最近在忙项目,好久都没有更新博客,最近在项目中刚好遇到一个问题,就是在使用MyBatis-Plus updateById(xxx)的时候,居然更新不了字符串或者null,本文分享两种解决方案,具体大家可以根据自己的需求选择一种方法解决。原创 2022-10-14 23:46:45 · 3638 阅读 · 0 评论 -
MybatisPlus 实体类与数据库表映射关系&MybatisPlus:ORM思想
在开发中可能会遇到MyBatis-Plus使用实体类属性进行SQL操作,但是不用存到数据库中去查找,这时候我们的实体中有这个属性,但是数据库的表中没有这个字段(即:实体类属性非数据库表字段),如果不做处理就会报错。例如MyUserTable 对应的数据库表为 my_user_table;TEMyUserTable 对应表名为t_e_my_user_table;在类名上方添加@TableName(“my_user_table”)在实体类的属性上面加上这个注解后,此字段就不会映射数据库了。......原创 2022-08-27 12:12:56 · 16761 阅读 · 5 评论 -
@TableLogic注解表示逻辑删除
效果:在字段上加上这个注解再执行BaseMapper的删除方法时,删除方法会变成修改场景:1.实体类中属性加上@TableLogic,2.调用BaseMapper的deleteById(id)或者调用IService的removeById(id)效果:没有@TableLogic注解调用deleteById/removeById,直接删除数据。有注解走Update方法@TableLogic注解参数@TableLogic(value=“原值”,delval=“改值”)...原创 2022-08-27 12:06:03 · 140 阅读 · 0 评论 -
MyBatis-Plus--解决逻辑删除与唯一索引的问题--方法/实例
说明本文用示例介绍MyBatis-Plus如何解决逻辑删除与唯一索引的问题。物理删除与逻辑删除 数据是很重要的,数据库里的数据在删除时一般不会用DELETE语句直接物理删除。 通常的做法是使用逻辑删除,也就是:新加一个标记是否删除的字段,在删除时不是真的删除,而是使用UPDATE语句将某个字段设置为删除状态。例如:“deleted_flag”,0表示未删除,其他表示已删除。MyBatis-Plus****默认的逻辑删除查询时:自动加"AND deletedFlag = 0"原创 2022-08-23 00:11:11 · 2122 阅读 · 4 评论 -
mybatis plus之自定义SQL查询
mybatis plus之自定义SQL查询原创 2022-08-22 23:53:02 · 233 阅读 · 0 评论 -
mybatis-plus使用和原理剖析之逻辑删除
TableInfo是一个极为重要的类,它在项目工程启动时通过工具类初始化而来。转载 2022-08-20 23:55:56 · 1276 阅读 · 0 评论 -
Mybatis-plus学习笔记
提示:lambda 条件构造器好处是由于它是通过调用实体类中的方法,如果方法名称写错,会直接报错,从而提前纠错。selectObjs 的用法和前面的 selectList 很像,都是传入一个查询构造器进行查询,然后返回一个 List。注意:map 写的是数据表中的列名,而非实体类的属性名。该策略会使用雪花算法自动生成主键 ID,主键类型为 Long 或 String(分别对应 MySQL 的表字段为。注意:是数据库中符合传入条件的记录有多条,那就不能用这个方法,会报错。,对应 MySQL 的表字段为。原创 2022-08-20 23:53:03 · 4531 阅读 · 0 评论 -
Mybatis-Plus条件
AbstractWrapper大于和小于(帮助记忆)eq 就是 equal等于ne 就是 not equal不等于gt 就是 greater than大于lt 就是 less than小于ge 就是 greater than or equal 大于等于le 就是 less than or equal 小于等于allEq:全部eq(或个别isNull)参数说明: : 为数据库字段名(注意不是entity),为字段值 : 为则在的为时调用 isNull 方法,为时则忽略为的 :原创 2022-05-26 19:47:44 · 4415 阅读 · 0 评论 -
Mybatis-Plus之逻辑删除
概念什么是逻辑删除逻辑删除:假删除。将对应数据中代表是否被删除字段状态修改为“被删除状态”,之后在数据库中仍旧能看到此条数据记录。数据库实现思路:插入数据时,标记为未删除状态;查询、修改时,只获取未删除状态的数据进行操作;删除时则更新删除状态为已删除,则可实现逻辑上删除,物理上任存在数据功能。参考阿里巴巴开发规范表达逻辑删除的字段名为 is_deleted,1 表示删除,0 表示未删除。测试案例在表中添加is_deleted字段,并设置默认值为0,实体类添加逻辑删除字段并添加 @TableLo原创 2022-05-26 09:19:56 · 419 阅读 · 0 评论 -
MyBatis-Plus——字段类型处理器TypeHandler
字段类型处理器(TypeHandler)1,准备工作(1)MyBatis 中的 TypeHandler 类型处理器用于 JavaType 与 JdbcType 之间的转换,假设我们用户表中有一个联系方式字段,类型为字符串:(2)而对应的实体类代码如下,可以看到实体类中 contact 属性类型为 Map。由于与数据库字段类型不匹配,如果不做任何处理的话无论是查询还是插入都会报错。这里我们通过 @TableField 注解将 FastjsonTypeHandler 这个类型处理器快速注入到 myba原创 2022-05-25 22:55:08 · 8583 阅读 · 0 评论 -
MybatisPlus——selectPage
没mybatisPlus坐标的可以导一下<!--mybatis-plus的springboot支持--> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.2.0</v原创 2022-05-25 22:26:32 · 4795 阅读 · 0 评论 -
Mybatis-Plus之四种lambda方式LambdaQueryWrapper,QueryWrapper<实体>().lambda(),LambdaQueryChainWrapper<实体>
Mybatis-Plus之四种lambda方式lambda四种表达形式前言使用了lambda表达式 可以通过方法引用的方式来使用实体字段名的操作,避免直接写数据库表字段名时的错写名字;一、LambdaQueryWrapper<> /** * lambda 条件构造器 * 生成的sql语句 SELECT id,name,age,email,manager_id,create_time FROM user WHERE name LIKE ? AND age <原创 2022-05-25 22:20:47 · 36296 阅读 · 2 评论 -
MyBatisPlus 学习笔记_MP的AR模式
狂神说 MyBatisPlus 学习笔记一、快速入门文档:https://mp.baomidou.com/使用第三方组件:导入对应依赖研究依赖如何配置代码如何编写提高扩展技术能力步骤:1、创建数据库 mybatis_plus2、创建user表DROP TABLE IF EXISTS user;CREATE TABLE user( id BIGINT(20) NOT NULL COMMENT '主键ID', name VARCHAR(30) NULL DEFA..原创 2022-05-25 22:01:01 · 568 阅读 · 0 评论 -
Mybatis-Plus实现逻辑删除
数据库中的数据删除会分为两种:物理删除 和 逻辑删除物理删除物理删除就是我们删除数据库中的一条数据时,数据会真的被删除逻辑删除逻辑删除指的是我们删除一条数据时,数据不会在数据库中消息,逻辑删除是我们现在开发中经常使用到的一种删除(1)首先我们需要在实体类和数据表中添加一个逻辑删除字段deleted,默认为0数据库(这里以user表为例)实体类我们可以在application.properties文件中进行deleted字段值修改,比如说,10代表没删除,11代表已经逻辑删除mybati原创 2022-05-25 13:34:41 · 2707 阅读 · 1 评论 -
MybatisPlus中@TableField注解的使用详解
MybatisPlus中@TableField注解的使用详解实现官方文档说明:com.baomidou.mybatisplus.annotations.TableFieldTableField注解新增属性 update 预处理 set 字段自定义注入(讲解:比如我们使用mybatisplus自带的insert()方法向数据库插入数据时,假设我们给age字段赋值为1,但是我们在age字段上的@TableField注解里面加了update=“%s+1”,那么真真插入到数据库的值就是age=2,而不是原创 2022-05-24 22:43:09 · 20882 阅读 · 1 评论 -
mybatis-plus 如何判断参数是否为空并作为查询条件
判断参数是否为空并作为查询条件@Override public Page<DemandEntity> selectByDepartmentDisplay(DemandEntity demandEntity) { EntityWrapper<DemandEntity> wrapper = new EntityWrapper<DemandEntity>(); wrapper.eq(!StringUtils.isNullOrEmpty(原创 2022-05-24 22:36:23 · 15125 阅读 · 1 评论 -
Mybatis-Plus条件参数查询手册
【引言】使用mybatis-plus框架的基础上,直接使用其中的条件参数进行查询还是很方便的。但每次使用到像大于、不等于这样一些不常用条件时,都需要现查,所以记录在这篇博客里,当作一个自己的查询手册。【手册】查询方式说明select设置查询字段andAND 语句,拼接 + AND (字段=值)orOR 语句,拼接 + OR (字段=值)eq等于=allEq基于 map 内容等于=ne不等于<>gt大于>ge转载 2022-05-24 22:33:09 · 181 阅读 · 0 评论 -
MyBatis-plus 自动填充MetaObjectHandler不生效问题
背景在项目中经常遇到一些数据需要自动填充,填充方法都是同一种规则,例如创建时间等。1 自动填充方法配置1.1 实体类添加注解1.2 在handler包下实现元对象处理器接口import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;import org.apache.ibatis.reflection.MetaObject;import org.slf4j.Logger;import org.slf4j.LoggerFa原创 2022-05-24 22:20:18 · 5603 阅读 · 0 评论 -
SpringBoot 整合mybatis-plus 高级功能及用法详解
springboot 整合mybatis-plus 高级功能及用法详解学习并使用mybatis-plus的一些高级功能的用法例如: AR模式、 乐观锁 、逻辑删除 、自动填充、数据保护等功能为了方便演示,咱们还是新建一个全新的项目引入mp依赖 <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId>原创 2022-05-24 22:13:52 · 1822 阅读 · 4 评论 -
MyBatis-Plus——增删查改
开发环境IDEAJDK:1.8Spring Boot:2.6.2Maven:3.3.9MySQL:8.0.23数据库准备CREATE DATABASE mybatis_plus_db; DROP TABLE IF EXISTS person;CREATE TABLE person( id BIGINT(20) NOT NULL COMMENT '主键ID', name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名',age INT(11.原创 2022-01-18 23:32:05 · 5149 阅读 · 0 评论