技术标签: spring boot java mybatis mysql springboot
首先,这个问题并没有影响代码执行,查询的数据是正确的。但是报错信息太长,让我觉得难受,所以研究了下怎么改。
太长了,中间部分省略。
net.sf.jsqlparser.JSQLParserException
at net.sf.jsqlparser.parser.CCJSqlParserUtil.parse(CCJSqlParserUtil.java:56)
at com.github.pagehelper.parser.OrderByParser.converToOrderBySql(OrderByParser.java:51)
at com.github.pagehelper.dialect.AbstractHelperDialect.getPageSql(AbstractHelperDialect.java:176)
...
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:564)
at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:433)
...
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:564)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:344)
...
at java.base/java.lang.Thread.run(Thread.java:832)
Caused by: net.sf.jsqlparser.parser.ParseException: Encountered " <S_CHAR_LITERAL> "\'type\' "" at line 2, column 71.
Was expecting one of:
"DO" ...
"ANY" ...
"KEY" ...
"PERCENT" ...
"END" ...
"OPEN" ...
"TABLE" ...
...
"NO" ...
"ACTION" ...
<K_DATETIMELITERAL> ...
"PRECISION" ...
<S_IDENTIFIER> ...
<S_QUOTED_IDENTIFIER> ...
at net.sf.jsqlparser.parser.CCJSqlParser.generateParseException(CCJSqlParser.java:16395)
根据上面的信息,定位到报错的位置是我的某个mapper中的某个函数。对应的mysql语句是正确,内容大概如下:
select s.id , 'sgrna' as 'type' from sys_sgrna_order s limit 5;
问题就出在 ‘sgrna’ as ‘type’ 这里。经过搜索,发现只要在pom中引入一个依赖即可。
<dependency>
<groupId>com.github.jsqlparser</groupId>
<artifactId>jsqlparser</artifactId>
<version>4.6</version>
</dependency>
有的博客说需要在mapper中增加注解:@SqlParser(filter=true)
亲测,我这里不需要。
org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.lang.NoSuchMethodError: net.sf.jsqlparser.statement.select.PlainSelect.getGroupByColumnReferences()Ljava/util/List;
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1006)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:925)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:974)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:877)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:661)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:851)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.servlet.resource.ResourceUrlEncodingFilter.doFilter(ResourceUrlEncodingFilter.java:60)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
...
这个是因为pagehelper与jsqlparser的版本不一致,我改成下面这样就ok了(全部使用最新版本)。
<dependency>
<groupId>com.github.jsqlparser</groupId>
<artifactId>jsqlparser</artifactId>
<version>4.6</version>
</dependency>
<!--pagehelper-->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-autoconfigure</artifactId>
<version>1.4.6</version>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.4.6</version>
</dependency>
交叉编译mini2440开发板上的程序时出现如下错误:在RHEL5中安装交叉编译器arm-linux-gcc 4.4.3,然后交叉编译mini2440上的程序时出错: /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.9' not found 分析: 执行strings /usr/lib/libstdc++.so.6 | gre
_tms320c6000系列dsp系统结构原理与应用教程 董言治 娄树理视频
参考:https://blog.csdn.net/xiaoxiaowenqiang/article/details/81192045目前主流的VIO开源方案主要有以下几类,按照相机与IMU的耦合方式可分为松耦合和紧耦合,按照后端优化方案又可分为滤波优化和非线性优化。崔华坤老师有做过总结,详情可见老师github:https://github.com/StevenCui/VIO-Doc更新:VI-ORB ——> ORB-SLAM3ROVIO ——> ROVIOLI、Maplab目录V_vio综述
在项目中有很多地方用到Intent,Intent分为显示和隐式两种跳转到的方法,那么我们在这篇博客主要讲解一下隐式跳转的方法,以及几种在项目中需要的功能:1.打开网页隐式Intent,让我们不止下原Activity中跳转,也可以在多个Activity中进行跳转,共享数据。那么首先讲解,利用隐式跳转跳转到其他网页,代码如下:加入网络权限:<uses-permission a..._如何通过隐式intent系统的拨号应用
一、安装sassnpm install --save-dev sass-loader sass二、新建style.scss文件三、在vite.config.js或者vite.config.ts添加css: { //css预处理 路径最后要加上;不然会报错 preprocessorOptions: { scss: { additionalData: '@import "@/assets/scss/style.scss";', }, }_vite dart-sass
在处理业务的时候遇到一个坑,仔细看了一下发现还是自己不够仔细才出现的问题如图:原因: Context中有一个startActivity()方法,Activity继承自Context ,重载了startActivity()方法.如果使用Activity的startActivity()方法,不会有限制。使用content的startActivity()的方法话,就需要开启一个task.
水果类(fruits): 西红柿 tomato 菠萝 pineapple 西瓜watermelon 香蕉banana 柚子 shaddock (pomelo) 橙子orange 苹果apple 柠檬lemon 樱桃 cherry 桃子peach 梨 pear 枣Chinese date (去核枣 pitted date ) 椰子coconut 草莓 strawberry 树莓 ra
本地Git工程迁移到GitHub,保留以前的提交记录。从原来的工程地址(git_repo_url)clone一份裸版本库到tmp 目录 git clone –bare git_repo_url tmp在GitHub上新建一个git工程,假设url为new_git_repo在tmp目录下执行以下命令,推送到GitHub git push –mirror n_迁移本地git到github
点击上方“公众号”关注标准信息2020年3月份即将实施国家标准目录(四)标准编号标准名称实施日期GB/T 37916-2019小型电动高压清洗机安全规范2020-03-01GB/T 9443-2019铸钢铸铁件 渗透检测2020-03-01GB/T 2294-2019焦化固体类产品软化点测定方法2020-03-01GB/T 38024-2019微纳卫星产品接口要求2020-03-01GB..._手术分级目录2023年最新
7.5_1660ti算力
00. 目录文章目录00. 目录01. 命令概述02. 命令格式03. 常用选项04. 参考示例05. 附录01. 命令概述test 命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试。02. 命令格式用法: test EXPRESSION test03. 常用选项#1. 关于两个整数之间的判定,例如 test n1 -eq n2 ...
#include<stdio.h>#include<stdlib.h>#include<string.h>#include<conio.h>#define MAXLEN 100//栈的数据类型typedef struct{ char dept[20]; //科别 char docname[20]; //医生姓名 cha..._使用队列技术实现医院排队叫号.net