MyBatis+MyBatisPlus中遇到的一些坑及解决

 更新时间:2023年03月30日 09:09:39   作者:星辰明夜  
这篇文章主要介绍了MyBatis+MyBatisPlus中遇到的一些坑及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

MyBatis+MyBatisPlus中遇到的一些坑

MyBatis是很常用的持久层框架,MyBatisPlus是一个 MyBatis 的增强工具.在实际工作中这两者就像是咖啡伴侣一样如影随形.

但是总会遇到这样或那样的问题,可能是一个失误,也可能是踩了个坑

坑一:MyBatisPlus分页不生效

自己没开启分页插件,是谁更坑呢?

 @Configuration
 public class WebMvcConfig extends WebMvcConfigurationSupport {
   @Bean
    public PaginationInterceptor paginationInterceptor() {
        return new PaginationInterceptor();
    }
 }

坑二:一对多关联查询查询总条数错误

这是个真坑,好多人踩过.之所以会错误,是因为MyBatisPlus的分页是在SQL语句最后添加limit实现的,这就导致一对多关联查询出来的多条数据被记入了总条数参加了分页.

想要解决,简单粗暴的就是把关联查询分开,先查"一"的相关信息,然后遍历再查"多"的相关信息.

作为一个认(闲)真(的)负(蛋)责(疼)的程序猿,肯定得用一些看上去高(没)大(卵)上(用)的方式.

实体

@Data
@ApiModel(value="产品对象")
public class EcProduct{

    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;

    @ApiModelProperty(value = "产品名称")
    private String name;
    
    @ApiModelProperty(value = "添加时间")
    private Date createDate;

    @ApiModelProperty(value = "操作人ID")
    private Integer optUserId;
    //一对一
	private EcInsuranceCompany insuranceCompany;
	//一对多
	private List<EcProductDuty> dutys;
}


@Data
@ApiModel(value="公司对象")
public class EcInsuranceCompany{

    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;

    @ApiModelProperty(value = "公司名称")
    private String name;
}

@Data
@ApiModel(value="信息对象")
public class EcProductDuty {
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    private String detail;
}

mapper.xml

   <resultMap id="productPlanRespone" type="XXX.EcProduct">
        <id property="id" column="id"/>
        <result property="name" column="name"/>
        .............
        <association property="insuranceCompany" javaType="XXX.EcInsuranceCompany">
            <id property="id" column="iid"/>
            ............
        </association>
        <collection property="dutys" column="id" select="XXXX.getProductDutyByPlanId">
        </collection>
    </resultMap>

       <select id="XXX" resultMap="productPlanRespone">
		</select>

mybatisplus遇到的问题

使用MyBatis-plus代码生成器 出错

1、使用myabtis-plus代码自动生成器,启动时出现下面这个错误

在pom.xml中添加下面依赖

  <dependency>
            <groupId>org.apache.velocity</groupId>
            <artifactId>velocity-engine-core</artifactId>
            <version>2.2</version>
        </dependency>
<dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.4.1</version>
        </dependency>

2、代码生成器启动以后,发现已经自动创建了一些包和代码

打开entiry包下的实体类User,发现显示包不存在

在pom.xml配置文件中添加下面依赖

   <!--配置ApiModel在实体类中不生效-->
    <dependency>
        <groupId>com.spring4all</groupId>
        <artifactId>spring-boot-starter-swagger</artifactId>
        <version>1.5.1.RELEASE</version>
    </dependency>

至此,使用MyBatis-plus代码生成器 遇到的错误全部总结完毕。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • MybatisPlus3.5.5与pagehelper starter2.1.0冲突的问题解决

    MybatisPlus3.5.5与pagehelper starter2.1.0冲突的问题解决

    在使用MybatisPlus 3.5.5与PageHelper Starter 2.1.0时,由于引用了不同版本的jsqlparser库(4.6与4.7),会导致运行时错误,解决方案涉及确认依赖版本,本文就来介绍一下,感兴趣的同学可以下载学习
    2024-10-10
  • java传入时间戳返回LocalDateTime的实现方法

    java传入时间戳返回LocalDateTime的实现方法

    这篇文章主要介绍了java传入时间戳返回LocalDateTime的实现方法,在Java中将时间戳转换为LocalDateTime时需要注意时区问题,因为LocalDateTime不包含时区信息,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-11-11
  • Java的List集合框架之LinkedList详细解析

    Java的List集合框架之LinkedList详细解析

    这篇文章主要介绍了Java的List集合框架之LinkedList详细解析,LinkedList底层是内部Node类的存储,prev、next、item值,同时最外层还有first、last节点,需要的朋友可以参考下
    2023-11-11
  • 在Docker中部署Spring Boot项目过程详解

    在Docker中部署Spring Boot项目过程详解

    这篇文章主要介绍了在Docker中部署Spring Boot项目,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • springboot+camunda实现工作流的流程分析

    springboot+camunda实现工作流的流程分析

    Camunda是基于Java语言,支持BPMN标准的工作流和流程自动化框架,并且还支持CMMN规范,DMN规范,本文给大家介绍springboot+camunda实现工作流的流程分析,感兴趣的朋友一起看看吧
    2021-12-12
  • Java8中Optional类的使用说明

    Java8中Optional类的使用说明

    Optional类主要解决的问题是臭名昭著的空指针异常(NullPointerException),每个Java程序员都非常了解的异常,这篇文章主要给大家介绍了关于Java8中Optional类使用的相关资料,需要的朋友可以参考下
    2021-11-11
  • 使用Java实现Redis限流的方法

    使用Java实现Redis限流的方法

    限流的作用是防止某个段时间段内的请求数过多,造成模块因高并发而不可用。这篇文章给大家介绍使用Java实现Redis限流的相关知识,一起看看吧
    2021-09-09
  • Spring的跨域的几个方案

    Spring的跨域的几个方案

    这篇文章主要介绍了Spring的跨域的几个方案,CrossOrigin、addCorsMappings、CorsFIlter等方案,具有一定的参考价值,需要的小伙伴可以参考一下,希望对你有所帮助
    2022-02-02
  • 浅谈Java中类的实例化步骤

    浅谈Java中类的实例化步骤

    今天小编就为大家分享一篇关于浅谈Java中类的实例化步骤,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-02-02
  • Java输出Hello World完美过程解析

    Java输出Hello World完美过程解析

    当我们学习一门编程语言的时候,我们都会先学如何输出Hello World!本文通过几个例子给大家介绍输出Hello World的代码,感兴趣的朋友一起看看吧
    2021-06-06

最新评论