Springboot整合SSMP报错分析

简介: 本文介绍了Springboot整合SSMP框架时常见的报错及解决方案,包括MyBatis-Plus版本不兼容导致的Lambda表达式条件构造器报错及表名不匹配问题。通过升级或降级MyBatis-Plus版本、使用@TableName注解或配置table-prefix属性,可有效解决上述问题,帮助开发者避免在整合SSMP时出现不必要的错误。

一、简介

这次介绍小白学习Springboot中整合SSMP(Spring+SpringMVC+Mybatis-Plus)时可能出现的一些常见报错(我刚学习的时候遇到的),以及相应的解决方案。下面这些问题也是我遇到的问题,对于初学者来说可能会比较有帮助,希望给大家带来参考。

IDE:idea、JDK:1.8

二、常见报错

1.Error evaluating expression 'ew.sqlSegment != null and ew.sqlSegment != '' and ew.nonEmptyOfWhere'. Cause: org.apache.ibatis.ognl.OgnlException: sqlSegment [java.lang.ExceptionInInitializerError]

1.1 报错场景:

我在测试类中使用了lambda表达式方式的条件构造器进行条件查询的时候,执行时出现报错

java

体验AI代码助手

代码解读

复制代码

@Test
    void testGetBy2(){
        String name = "1";
        LambdaQueryWrapper<Book> lqw = new LambdaQueryWrapper<Book>();
        lqw.like(name != null,Book::getName,name);
        bookDao.selectList(lqw);
    }

下面是部分报错代码~

xml

体验AI代码助手

代码解读

复制代码

org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.builder.BuilderException: Error evaluating expression 'ew.sqlSegment != null and ew.sqlSegment != '' and ew.nonEmptyOfWhere'. Cause: org.apache.ibatis.ognl.OgnlException: sqlSegment [java.lang.ExceptionInInitializerError]
...
...
...
Process finished with exit code -1

1.2 报错分析:

原因是Mybatis-plus版本和Lambda会有不兼容的问题,如果你使用的Mybatis-plus版本太旧,可能会导致此错误,我用的是3.4.3版本会报错。

1.3 解决方案:

将Mybatis-plus的版本改成3.4.2或者3.5.2就可以解决。

2.Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Table 'ssm_db.book' doesn't exist

2.1 报错场景:

整合Mybatis-plus后,准备CURD操作执行时,报的错误。 下面是部分报错代码~

xml

体验AI代码助手

代码解读

复制代码

org.springframework.jdbc.BadSqlGrammarException: 
### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Table 'ssm_db.book' doesn't exist
### The error may exist in com/itxhj/dao/BookDao.java (best guess)
### The error may involve defaultParameterMap
### The error occurred while setting parameters
### SQL: SELECT COUNT(*) FROM book
### Cause: java.sql.SQLSyntaxErrorException: Table 'ssm_db.book' doesn't exist
; bad SQL grammar []; nested exception is java.sql.SQLSyntaxErrorException: Table 'ssm_db.book' doesn't exist

2.2 报错分析:

这个问题的原因是MyBatis-plus在确定操作的表时,由的是BaseMapper的泛型决定,即实体类决定,Mapper接口继承BaseMapper时,默认操作的表名和实体类型的类名是一致的,我的表名的tbl_book,而实体类名是Book,就会报错原因Table 'ssm_db.book' doesn't exist

2.3 解决方案:

方法一:

在实体类上面使用 @TableName 注解,注解参数就是你的表名。

java

体验AI代码助手

代码解读

复制代码

@Data
@TableName("tbl_book")
public class Book {
    private Integer id;
    private String type;
    private String name;
    private String description;
}
方法二:

在application.yml配置文件中可以配置 table-prefix 属性指定前缀,Mybatis-plus 找表的时候会在前加上前缀。

yml

体验AI代码助手

代码解读

复制代码

mybatis-plus:
  global-config:
    db-config:
      # 通过全局配置,查找的表就是tbl_book
      table-prefix: tbl_
      id-type: auto
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

注意:使用了注解 @TableName,table-prefix属性就不在生效了。

三、总结

本文介绍了在Springboot中整合SSMP框架时可能出现的常见报错及其解决方案。其中包括lambda表达式条件构造器报错和表名不匹配报错的解决方法。希望对你在使用SSMP框架时遇到的问题提供有价值的参考。在使用SSMP框架时,我们应当注意版本兼容问题,同时也要注意实体类和表名的匹配,以避免出现不必要的错误。


转载来源:https://juejin.cn/post/7428574683191197711

相关文章
|
3月前
|
安全 NoSQL Java
SpringBoot接口安全:限流、重放攻击、签名机制分析
本文介绍如何在Spring Boot中实现API安全机制,涵盖签名验证、防重放攻击和限流三大核心。通过自定义注解与拦截器,结合Redis,构建轻量级、可扩展的安全防护方案,适用于B2B接口与系统集成。
601 3
|
4月前
|
JavaScript Java 应用服务中间件
基于springboot的学生成绩分析和弱项辅助系统
本系统旨在解决学生成绩分析与弱项辅助信息管理效率低下的问题,通过软件技术实现数据处理的高效化、流程化与规范化,提升管理质量与便捷性。
|
8月前
|
SQL 前端开发 Java
深入分析 Spring Boot 项目开发中的常见问题与解决方案
本文深入分析了Spring Boot项目开发中的常见问题与解决方案,涵盖视图路径冲突(Circular View Path)、ECharts图表数据异常及SQL唯一约束冲突等典型场景。通过实际案例剖析问题成因,并提供具体解决方法,如优化视图解析器配置、改进数据查询逻辑以及合理使用外键约束。同时复习了Spring MVC视图解析原理与数据库完整性知识,强调细节处理和数据验证的重要性,为开发者提供实用参考。
361 0
|
12月前
|
Java 数据库连接 Maven
最新版 | 深入剖析SpringBoot3源码——分析自动装配原理(面试常考)
自动装配是现在面试中常考的一道面试题。本文基于最新的 SpringBoot 3.3.3 版本的源码来分析自动装配的原理,并在文未说明了SpringBoot2和SpringBoot3的自动装配源码中区别,以及面试回答的拿分核心话术。
最新版 | 深入剖析SpringBoot3源码——分析自动装配原理(面试常考)
|
11月前
|
Java 应用服务中间件 API
【潜意识Java】javaee中的SpringBoot在Java 开发中的应用与详细分析
本文介绍了 Spring Boot 的核心概念和使用场景,并通过一个实战项目演示了如何构建一个简单的 RESTful API。
297 5
|
XML druid Java
基于SpringBoot的SSMP整合
本文介绍了如何使用Spring Boot结合Lombok、MyBatisPlus等技术快速搭建一个简单的Web应用。从创建项目、数据库表设计到实体类、Mapper、Service、Controller各层的开发,最后通过PostMan测试接口功能,详细记录了每一步的实现过程。
159 2
基于SpringBoot的SSMP整合
|
Java BI API
spring boot 整合 itextpdf 导出 PDF,写入大文本,写入HTML代码,分析当下导出PDF的几个工具
这篇文章介绍了如何在Spring Boot项目中整合iTextPDF库来导出PDF文件,包括写入大文本和HTML代码,并分析了几种常用的Java PDF导出工具。
3337 0
spring boot 整合 itextpdf 导出 PDF,写入大文本,写入HTML代码,分析当下导出PDF的几个工具
|
XML Java 应用服务中间件
【Spring】运行Spring Boot项目,请求响应流程分析以及404和500报错
【Spring】运行Spring Boot项目,请求响应流程分析以及404和500报错
1370 2
|
Java Spring 容器
Spring Boot 启动源码解析结合Spring Bean生命周期分析
Spring Boot 启动源码解析结合Spring Bean生命周期分析
440 11
|
JavaScript Java 测试技术
基于SpringBoot+Vue的高质量升学分析系统的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue的高质量升学分析系统的详细设计和实现(源码+lw+部署文档+讲解等)
88 0