首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Springboot整合SSMP报错分析

Springboot整合SSMP报错分析

作者头像
闻说社
发布2025-07-09 17:57:59
发布2025-07-09 17:57:59
13300
代码可运行
举报
运行总次数:0
代码可运行

一、简介

这次介绍小白学习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表达式方式的条件构造器进行条件查询的时候,执行时出现报错

代码语言:javascript
代码运行次数:0
运行
复制
java 体验AI代码助手 代码解读复制代码@Test
    void testGetBy2(){
        String name = "1";
        LambdaQueryWrapper<Book> lqw = new LambdaQueryWrapper<Book>();
        lqw.like(name != null,Book::getName,name);
        bookDao.selectList(lqw);
    }

下面是部分报错代码~

代码语言:javascript
代码运行次数:0
运行
复制
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操作执行时,报的错误。 下面是部分报错代码~

代码语言:javascript
代码运行次数:0
运行
复制
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 注解,注解参数就是你的表名。

代码语言:javascript
代码运行次数:0
运行
复制
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 找表的时候会在前加上前缀。

代码语言:javascript
代码运行次数:0
运行
复制
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框架时,我们应当注意版本兼容问题,同时也要注意实体类和表名的匹配,以避免出现不必要的错误。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、简介
  • 二、常见报错
    • 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 报错场景:
      • 1.2 报错分析:
      • 1.3 解决方案:
    • 2.Error querying database. Cause: java.sql.SQLSyntaxErrorException: Table 'ssm_db.book' doesn't exist
      • 2.1 报错场景:
      • 2.2 报错分析:
      • 2.3 解决方案:
  • 三、总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档