MyBatis Plus查询报错:Cause: java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax;

博主在使用MyBatisPlus进行查询时遇到SQL错误,问题源于@TableLogic注解导致的逻辑删除条件。通过注释相关代码解决了问题。分析表明@TableLogic可能在构建SQL语句时强制加入其修饰的属性,导致错误的查询条件。解决方案是临时移除或调整@TableLogic的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

刚才在利用MyBatis Plus查询时遇到一个标题所述错误。

查询代码:

QueryWrapper wrapper = new QueryWrapper();
wrapper.eq("name", "李四");
System.out.println(mapper.selectList(wrapper));

代码是没问题的,但会报错。

我当时其实是有点慌的,因为在上次还可以使用,代码都没改变。又想着昨天晚上我配置了Python的环境变量,是不是idea会受到影响(就很慌)。

然后我又往下看了一下报错的代码 ,发现了这个:

这个错误太明显了,分明就是SQL语句的错误,但是我没用deleted呀,是不是修饰符在搞事情,于是我仔细看了一下实体类中用于修饰属性的修饰符,看到了这个:

 这个就是为了实现一个逻辑删除,意思就是在数据库中并没有真正删除数据,而是将标识符deleted由0变为1就行了,这样的话就可以实现在查询时默认不再显示当前标识的数据,恰巧这次的报错信息就是deleted=0,是不是这个属性在搞错,于是我索性直接把这两行代码全部注释掉,于是就不报错了。

接着我又想着是不是仅仅修饰符@TableLogic一直在捣鬼,接着就把

private Integer deleted;

 注释取消了,发现还是可以查询成功的,说明就是@TableLogic在捣鬼。

我感觉@TableLogic在修饰时会强制加上它修饰的属性而结束一个SQL语句,导致再加其他查询条件就会认为是硬生生的拼接上的错误语句就会发生报错。(我没看其他的官方说法,仅个人想法)

冲冲冲,奥利给!!!

Exception in thread "main" org.springframework.jdbc.BadSqlGrammarException: ### Error updating database. Cause: java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-vip(id,name,card_number,birth) values(null,'jack','123','1999-1-1')' at line 1 ### The error may exist in file [D:\work\code\demo-011\target\classes\mapper\VipMapper.xml] ### The error may involve com.li.demo011.repository.VipMapper.insert-Inline ### The error occurred while setting parameters ### SQL: insert into t-vip(id,name,card_number,birth) values(null,?,?,?) ### Cause: java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-vip(id,name,card_number,birth) values(null,'jack','123','1999-1-1')' at line 1 ; bad SQL grammar [] at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:246) at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:107) at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:93) at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:347) at jdk.proxy2/jdk.proxy2.$Proxy47.insert(Unknown Source) at org.mybatis.spring.SqlSessionTemplate.insert(SqlSessionTemplate.java:224) at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:62) at org.apache.ibatis.binding.MapperProxy$PlainMethodInvoker.invoke(MapperProxy.java:141) at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:86) at jdk.proxy2/jdk.proxy2.$Proxy48.insert(Unknown Source) at com.li.demo011.service.VipServiceImpl.save(VipServiceImpl.java:17) at com.li.demo011.Demo011Application.main(Demo011Application.java:18) Caused by: java.sql
03-22
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值