202104-27 解决Mybatis-plus和pagehelper依赖冲突的方法示例 简介MyBatis-Plus(简称MP)是一个 MyBatis 的增强工具,在MyBatis的基础上只做增强不做改变,为简化开发、提高效率而生。启动即会自动注入基本CURD,性能基本无损耗,直接面向对象操作Mybati-plus本身自带分页功能,但是我个人一直是使用pagehelper进行分页,所以在pom中添加了pagehelper依赖,但是运行项目后发现jar包冲突,面对冲突我们应该怎么解决它呢,看完如下内容便可轻松解决先看依赖<!--mbatis-p... 继续阅读 >
202104-27 Mybatis-plus与Mybatis依赖冲突问题解决方法 错误描述Anattemptwasmadetocallamethodthatdoesnotexist.Theattemptwasmadefromthefollowinglocation:com.baomidou.mybatisplus.core.MybatisMapperAnnotationBuilder.getLanguageDriver(MybatisMapperAnnotationBuilder.java:369)Thefollowingmethoddidnotexist:com.baomidou.mybatisplus.core.MybatisConfiguration.getLanguageDriver(Ljava/lang/Class;)Lorg/apache/ibatis/scripting/LanguageDriver;... 继续阅读 >
202104-07 mybatis-plus动态表名的实现示例 背景在分表的背景下,有时候查询数据的时候需要跨表查询,那此时就需要MP在解析的时候,能够很好的自适应表格名称实现MP中是通过PaginationInterceptor(分页插件)完成动态表名解析的,配置如下:数据库中表依赖<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.3.1.tmp</version></dependency>配置类packagecom.huanchuang.common.config;importcom.baomidou.myba... 继续阅读 >
202103-17 mybatis-plus如何禁用一级缓存的方法 前言用过mybatis-plus的朋友可能会知道,mybatis-plus提供了多租户插件的功能,这个功能可以让开发人员不用手动写租户语句,由该插件自动帮你加上租户语句。今天的素材来源就是取自业务开发人员使用多租户插件时,遇到的一个神奇的问题问题重现业务开发人员要实现根据手机号码更新租户的密码功能,其代码形如下for(Tenantt:tenantList){ApplicationChainContext.getCurrentContext().put(ApplicationChainContext.TENANT... 继续阅读 >
202103-15 Mybatis-plus使用注解 @TableField(exist = false) 当表中午字段,但是实体类中需要这个成员变量时怎么办,可以使用mybatis-plus中@TableField(exist=false)如下:importcom.baomidou.mybatisplus.annotation.TableField;importcom.baomidou.mybatisplus.annotation.TableId;importcom.baomidou.mybatisplus.annotation.TableLogic;importcom.baomidou.mybatisplus.annotation.TableName;importjava.io.Serializable;importjava.util.Date;importjava.util.List;importcom.f... 继续阅读 >
202103-09 SpringBoot+Mybatis-Plus实现mysql读写分离方案的示例代码 1.引入mybatis-plus相关包,pom.xml文件2.配置文件application.property增加多库配置mysql数据源配置spring.datasource.primary.jdbc-url=jdbc:mysql://xx.xx.xx.xx:3306/portal?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC&characterEncoding=utf8&serverTimezone=GMT%2B8spring.datasource.primary.username=rootspring.datasource.primary.password=rootspring... 继续阅读 >
202103-09 Mybatis-Plus select不列出全部字段的方法 mybatis-plusselect查询语句默认是查全部字段,有两种方法可以指定要查询的字段CREATETABLE`user`(`id`bigint(20)NOTNULLCOMMENT'主键',`name`varchar(30)DEFAULTNULLCOMMENT'姓名',`age`int(11)DEFAULTNULLCOMMENT'年龄',`email`varchar(50)DEFAULTNULLCOMMENT'邮箱',`manager_id`bigint(20)DEFAULTNULLCOMMENT'直属上级id',`create_time`datetimeDEFAULTNULLCOMMENT'创建时间',PRIMARY... 继续阅读 >
202103-09 mybatis-plus实体类中出现非数据库映射字段解决办法 在使用mybatis或者其它mybatis的二次开发框架时(例如mybatis-plus),有时候数据库中的字段和实体类中的字段可能不一致。例如数据库中只有3个字段,而实体类中除了数据库中对应映射的三个字段以外还有多余的其余字段,例如实体类中有5个字段。那么运行就会报错如果需要在mybatis映射实体类中加入非数据库映射字段。那么可以使用@TableField(exist=false)进行标识对应字段不属于数据库的映射字段即可。当然可以点击进入@TableFi... 继续阅读 >
202103-05 详解使用Mybatis-plus + velocity模板生成自定义的代码 pom.xml文件的配置<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.3.0</version></dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-generator</artifactId><version>3.1.0</version></dependency><!--代码生成器模板--><dependency><groupId>org.apache.velocity</groupId><artifactId>velocity</artifactId><v... 继续阅读 >
202103-05 mybatis-plus IdWorker生成的Id和返回给前台的不一致的解决 问题描述今天在公司项目中修改id的生成策略为mybatis-plus自带的IdWorker策略时,发现返回给前台的id竟然和数据库不一致。费解得很呐。packagenet.mshome.twisted.tmall.entity;importcom.baomidou.mybatisplus.annotation.FieldFill;importcom.baomidou.mybatisplus.annotation.IdType;importcom.baomidou.mybatisplus.annotation.TableField;importcom.baomidou.mybatisplus.annotation.TableId;importlombok.AllArgsConst... 继续阅读 >
202102-20 MyBatis-Plus自动填充功能失效导致的原因及解决 1:先检查字段有没有加上注解@TableField(fill=FieldFill.INSERT_UPDATE)@TableField(fill=FieldFill.INSERT_UPDATE)privateDateupdatedTime;2:有没有实现MetaObjectHandler接口,并且加入到Spring容器中@ComponentpublicclassMyMetaObjectHandlerimplementsMetaObjectHandler{@OverridepublicvoidinsertFill(MetaObjectmetaObject){this.strictInsertFill(metaObject,"createdTime",Date.class,new... 继续阅读 >
202102-20 mybatis-plus 判断isnull or的操作 mybatis-plus判断null或者匹配固定值wrapper.lambda().and(wrapper1->wrapper1.isNull(MaterialInfoDO::getCompanyId).or().eq(MaterialInfoDO::getCompanyId,"ABC");补充:Mybatis-plus查询时某些字段为null在网站上搜索得到的是mybatis配置中需要添加一段配置驼峰命名法mybatis:configuration:map-underscore-to-camel-case:true但在公司项目中这个配置是已经配置的了,经过测试还是无法获取正确的值经过自己查看代码后... 继续阅读 >
202101-26 Mybatis-plus使用TableNameHandler分表详解(附完整示例源码) 为什么要分表Mysql是当前互联网系统中使用非常广泛的关系数据库,具有ACID的特性。但是mysql的单表性能会受到表中数据量的限制,主要原因是B+树索引过大导致查询时索引无法全部加载到内存。读取磁盘的次数变多,而磁盘的每次读取对性能都有很大的影响。这时一个简单可行的方案就是分表(当然土豪也可以堆硬件),将一张数据量庞大的表的数据,拆分到多个表中,这同时也减少了B+树索引的大小,减少磁盘读取次数,提高性能。两种基础分... 继续阅读 >
202101-10 MyBatis-Plus逆向工程——Generator的使用 有一位志同道合的朋友给我留言说,MyBatis-Plus的逆向工程跟接口继承BaseMapper有什么区别,我想了想,怎么解释都不合适,最后决定出此文章进行讲解。环境搭建首先创建一张数据库表DROPTABLEIFEXISTSuser;CREATETABLEuser(idBIGINT(20)NOTNULLCOMMENT'主键ID',nameVARCHAR(30)NULLDEFAULTNULLCOMMENT'姓名',ageINT(11)NULLDEFAULTNULLCOMMENT'年龄',emailVARCHAR(50)NULLDEFAULTNULLCOMMENT'邮箱... 继续阅读 >
202101-10 MP(MyBatis-Plus)实现乐观锁更新功能的示例代码 实现步骤step1:添加乐观锁拦截器MP的其他拦截器功能可以参考官网@BeanpublicMybatisPlusInterceptormybatisPlusInterceptor(){MybatisPlusInterceptorinterceptor=newMybatisPlusInterceptor();interceptor.addInnerInterceptor(newOptimisticLockerInnerInterceptor());returninterceptor;}step2:配置Entity@TableField(fill=FieldFill.UPDATE)@VersionprivateDateupdateTime;用更新字段充当版本号。上面... 继续阅读 >
202101-08 mybatis-plus 通用字段自动化(如逻辑删除和更新时间等) 一般来说某些项目比较规范的情况下,大多数表都会有逻辑删除字段和通用字段,例如更新时间,创建时间,更新人,创建人等等,但是在代码开发上会产生很多冗余的代码,逻辑删除的话,自己写比较繁琐,而且容易有遗漏逻辑。本来打算自己写切面去实现,偶然发现mybatis-plus已经帮封装实现了,试了一下,很好用,所以分享一下。逻辑删除逻辑删除的意思就是某些业务表,在用户删除某条数据的时候,不真正删除,而是将此数据某字段改成类... 继续阅读 >