Springboot整合mybatisplus时,使用条件构造器排序报错问题及解决
Springboot整合mybatisplus使用条件构造器排序报错
异常信息
{
"timestamp": "2022-03-23T12:04:29.797+0000",
"status": 500,
"error": "Internal Server Error",
"message": "Error attempting to get column 'create_time' from result set. Cause: java.sql.SQLFeatureNotSupportedException\n; null; nested exception is java.sql.SQLFeatureNotSupportedException",
"path": "/partJob/list"
}
网上查找得知:
数据库中的create_time是datetime类型,mybatis-plus生成代码时生成的是LocalDateTime单mybatis不支持该类型。
方法一
将实体类中的createtime改为DATE类型
方法二
调整Druid版本,升级到1.1.21
<dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.21</version> </dependency>
Mybatis使用IPAGE排序错误
错误信息
//分页排序
page.setOrders(OrderItem.descs("publish_time"));
报错信息
failed to concat orderBy from IPage, exception=null
这里”failed to concat orderBy from IPage, exception=null“只是提示你错误了,但是没有提及是哪里出现问题
检查错误原因
@Test public void testSqlParser() throws Exception{ String sql = ""; CCJSqlParserUtil.parse(sql); }
通过CCJSqlParserUtil.parse可以抛出SQL的问题所在,一般为关键字冲突、函数使用不匹配导致
例子
我这里的SQL为
sql: select a,b,IF(c=1 or d=2,0,1) as f from table;
这里是会提示SQL的IF关键字出现问题,但是这个SQL是可以执行成功,Ipage的排序解析认为这个SQL是错误的
而只有一个IF条件时,解析是正确的,所以这里抛出问题不一定是你的SQL问题,而是这个分页排序的问题
sql: select a,b,IF(c=1,0,1) as f from table;
现在就是两种解决办法:
1.放弃Ipage的排序功能,将排序语句写在SQL中
2.修改IF,在判断中只保留一个条件
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
Java内存模型(JMM)及happens-before原理
这篇文章主要介绍了java内存模型(JMM)及happens-before原理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下2020-04-04IDEA整合Dubbo+Zookeeper+SpringBoot实现
初学者,想自己动手做一个简单的demo,本文主要介绍了IDEA整合Dubbo+Zookeeper+SpringBoot实现,需要的朋友们下面随着小编来一起学习学习吧2021-06-06springboot对象为null的属性在json中不显示的解决
这篇文章主要介绍了springboot对象为null的属性在json中不显示的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2023-09-09
最新评论