202010-10 mybatis-plus getOne和逻辑删除问题详解 1.getOne如果查询出的结果有多个,这时候会抛异常这样就不用每次getOne的Wrapper后面还跟last(“limit1”)2.@TableLogic就不用每次list查询的时候跟上.eq(“deleted”,false)了PS:下面再次强调下Mybatis-Plus中的逻辑删除1.需要在删除的字段上添加注解@TableLogic2.在配置文件中写上配置 mybatis-plus:global-config:db-config:logic-delete-value:1#逻辑已删除值(默认为1)logic-not-delete-value:0... 继续阅读 >
202010-10 Mybatis-Plus通用枚举的使用详解 解决了繁琐的配置,让mybatis优雅的使用枚举属性!修改表结构ALTERTABLE`tb_user`ADDCOLUMN`sex`INT(1)NULLDEFAULT1COMMENT'1-男,2-女'AFTER`deleted`;定义枚举publicenumSexEnumimplementsIEnum<Integer>{MAN(1,"男"),WOMAN(2,"女");privateintvalue;privateStringdesc;SexEnum(intvalue,Stringdesc){this.value=value;this.desc=desc;}@OverridepublicIntegergetValue(){re... 继续阅读 >
202010-10 浅谈MyBatis-Plus学习之Oracle的主键Sequence设置的方法 一、Oracle的主键Sequence设置简介在Oracle数据库中不支持主键自增策略,它是通过Sequence序列来进行完成的,因此需要在MP中进行相关配置二、相关配置如下2.1、pom.xml添加相关依赖注意:由于oracle的授权问题,没办法从maven仓库中下载,因此可以手动从oracle官网中下载,并本地打包到仓库中<!--Oracle驱动:因为Oracle授权的问题,不能从Maven的仓库中下载到Oracle驱动--><dependency><groupId>com.oracle</groupId><art... 继续阅读 >
202010-10 使用mybatis-plus的insert方法遇到的问题及解决方法(添加时id值不存在异常) mybatis在持久层框架中还是比较火的,一般项目都是基于ssm。虽然mybatis可以直接在xml中通过SQL语句操作数据库,很是灵活。但正其操作都要通过SQL语句进行,就必须写大量的xml文件,很是麻烦。下面给大家介绍使用mybatis-plus的insert方法遇到的问题,具体内容如下所示:我在添加的时候,无缘无辜的给我报java.sql.SQLException:Field'id'doesn'thaveadefaultvalue如图:后来了解到 使用 mybatis-plus的insert方... 继续阅读 >
202010-10 Mybatis-Plus条件构造器的具体使用方法 在Mybatis-Plus中,Wrapper接口的实现类关系如下:可以看到,AbstractWrapper和AbstractChainWrapper是重点实现,接下来我们重点看下AbstractWrapper以及其子类。说明:QueryWrapper(LambdaQueryWrapper)和UpdateWrapper(LambdaUpdateWrapper)的父类用于生成sql的where条件,entity属性也用于生成sql的where条件注意:entity生成的where条件与使用各个api生成的where条件没有任何关联行为文档地址:https://my... 继续阅读 >
202010-10 Mybatis-Plus雪花id的使用以及解析机器ID和数据标识ID实现 概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移到Cassandra,因为Cassandra没有顺序ID生成机制,所以开发了这样一套全局唯一ID生成服务。结构snowflake的结构如下(... 继续阅读 >
202010-09 详解mybatis-plus的 mapper.xml 路径配置的坑 mybatis-plus今天遇到一个问题,就是mybatis没有读取到mapper.xml文件。特此记录一下,问题如下:org.apache.ibatis.binding.BindingException:Invalidboundstatement(notfound):com.husy.mapper.SystemUserMapper.findUserByNameatcom.baomidou.mybatisplus.core.override.MybatisMapperMethod$SqlCommand.<init>(MybatisMapperMethod.java:242)atcom.baomidou.mybatisplus.core.override.MybatisMapperMethod.<init... 继续阅读 >
202010-09 MyBatis-plus+达梦数据库实现自动生成代码的示例 先说点什么mybatis-plus是一款增强版的mybatis,功能强大,可以很大程度的简化开发。然而达梦数据库比较小众,虽然官方说mybatis-plus支持达梦数据库,但是使用起来遇到了很多问题。这篇文章主要讲如何使用mybatis-plus访问达梦数据库,并使用逆向工程自动生成代码。=。=对了这是个使用springboot的项目。(配置)POM文件,引入所需要的依赖<dependencies><dependency><groupId>org.springframework.boot</groupId>... 继续阅读 >
202010-09 mybatis-plus配置控制台打印完整带参数SQL语句的实现 问题背景通常我们开发的时候,需要联合控制台和Navicat/PLSQL等工具进行语句的拼接检查,如果只是输出了一堆???,那么将极大降低我们的效率。因此我们需要输出完整的SQL语句以便调试。update2020-July:新增官方p6spy打印分析sql语句方案解决方案(StdOutImpl)请注意:部分朋友反馈不生效,估计跟引入的包有一定关系,druid+mybatis-plus-boot-starter就亲测有用。请检查是否有log4j相关实现类。如果是application.yml#byzhe... 继续阅读 >
202010-09 mybatis-plus配置控制台打印完整带参数SQL语句的实现 问题背景通常我们开发的时候,需要联合控制台和Navicat/PLSQL等工具进行语句的拼接检查,如果只是输出了一堆???,那么将极大降低我们的效率。因此我们需要输出完整的SQL语句以便调试。update2020-July:新增官方p6spy打印分析sql语句方案解决方案(StdOutImpl)请注意:部分朋友反馈不生效,估计跟引入的包有一定关系,druid+mybatis-plus-boot-starter就亲测有用。请检查是否有log4j相关实现类。如果是application.yml#byzhe... 继续阅读 >
202010-09 解决mybatis-plus3.1.1版本使用lambda表达式查询报错的方法 最近项目中使用了mybatis-plus3.1.1版本,发现使用lambda表达式方式的条件构造器,执行时会报错;但是我用单元测试却通过,真是一个大坑啊。经过在网上一顿猛查,发现压根就是没有找到类似的问题,所以今天就记录一下这个大坑。测试代码:@OverridepublicUsergetByUsername(Stringusername){returnsuper.getOne(newQueryWrapper<User>().lambda().eq(User::getUsername,username));}先看看报错如下:org.mybatis.... 继续阅读 >
202010-09 MyBatis-Plus 动态表名SQL解析器的实现 一、引言先来说下动态名表在什么场景下需要使用呢?拿小编的实际项目来说,小编公司手里掌握着国内各个部分地区的医院患者数据,那么一个医院的患者的数据流量肯定是很大的,这个时候如果全部放在同一张表中,那么可想而知数据量的庞大。所以数据库设计的时候可以一家医院对应一张表,分开来存储,表中的列名都是一样的,只是表名不同。或者还可以做日志的存储,日志数据量也是很大的,可以分一个月对应一张表,比如:log_201907、... 继续阅读 >
202010-09 MyBatis-Plus 分页查询以及自定义sql分页的实现 一、引言分页查询每个人程序猿几乎都使用过,但是有部分同学不懂什么是物理分页和逻辑分页。物理分页:相当于执行了limit分页语句,返回部分数据。物理分页只返回部分数据占用内存小,能够获取数据库最新的状态,实施性比较强,一般适用于数据量比较大,数据更新比较频繁的场景。逻辑分页:一次性把全部的数据取出来,通过程序进行筛选数据。如果数据量大的情况下会消耗大量的内存,由于逻辑分页只需要读取数据库一次,不能获取数... 继续阅读 >
202010-09 mybatis-plus批处理IService的实现示例 一、pom文件引入<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.3.1.tmp</version></dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus... 继续阅读 >
202010-09 MyBatis-Plus 通用IService使用详解 一、引言MP除了通用的Mapper还是通用的Servcie层,这也减少了相对应的代码工作量,把通用的接口提取到公共。其实按照MP的这种思想,可以自己也实现一些通用的Controller。今天是周天,作为一名码农来说,这里小编提醒大家周末有空还是多出去运动一下。生命在于运动,生命诚可贵。二、小编瞎扯相信有和小编一样的朋友,在大城市独自漂泊,感觉就凭借自己内心那一点点的火苗,想要燃烧起来。小编在上海这些年,不慌也不忙,从开始每... 继续阅读 >
202010-09 mybatis-plus QueryWrapper自定义查询条件的实现 mybatis-plus框架功能很强大,把很多功能都集成了,比如自动生成代码结构,mybatiscrud封装,分页,动态数据源等等,附上官网链接https://mp.baomidou.com/,github上有代码例子,国内小伙伴推荐码云https://gitee.com/baomidou/mybatis-plus。 但是,其中还是有些小坑,文档也没有涉及的很全面,碰到问题,百度或者发issue,能力强的还是直接看源码好,一切答案都在源码中。版本推荐用3.1.0,3.1.1及以上版本有bug,访问map... 继续阅读 >