当前位置: 首页 > 知识库问答 >
问题:

java - mybatis-plus使用静态工具查询时出现语句错误报错?

韩瀚
2023-11-19

两个类,User中包含order

@Data@AllArgsConstructor@NoArgsConstructor@ToString@Table(name = "user_order",charset = MySqlCharsetConstant.UTF8,engine = MySqlEngineConstant.InnoDB)public class Order {    @Column(name = "id",type = MySqlTypeConstant.VARCHAR,length = 3,comment = "用户id")    private String user_id;    @Column(name = "address",type = MySqlTypeConstant.VARCHAR,length = 100,comment = "收货地址")    private String user_address;}
@Data@AllArgsConstructor@NoArgsConstructor@Accessors(chain = true)@ToString@Table(name = "user",charset = MySqlCharsetConstant.UTF8,engine = MySqlEngineConstant.InnoDB)public class User {    @Column(name = "id",isKey = true,type = MySqlTypeConstant.VARCHAR,length = 100,comment = "主键ID")    private String id;    @TableField("user_name")    private String name;    @TableField("user_age")    private Integer age;    @TableField("user_email")    private String email;    @TableField(exist = false)    private List<Order> orders;}

其中mapper和mapper.xml均用mybatis-plus自动生成
UserMapper

public interface UserServcie extends IService<User> {}

UserMapperImpl

@Servicepublic class UserServcieImp extends ServiceImpl<UserMapper,User> implements UserServcie{}

OrderMapper

public interface OrderService extends IService<Order> {}

OrderMapperImpl

@Servicepublic class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements OrderService {}

测试

// 测试Db.lambdaQuery(Order.class).in(Order::getUser_id,id).list();

报错如下

org.apache.ibatis.exceptions.PersistenceException: ### Error querying 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 'order      WHERE  (user_id IN ('3'))' at line 1### The error may exist in com/train/spring_mybatis_plus/mapper/OrderMapper.java (best guess)### The error may involve defaultParameterMap### The error occurred while setting parameters### SQL: SELECT  user_id,user_address  FROM order      WHERE  (user_id IN (?))### 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 'order      WHERE  (user_id IN ('3'))' at line 1    at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30)    at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:156)    at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:147)    at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:142)    at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.executeForMany(MybatisMapperMethod.java:166)    at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:77)    at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:148)    at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89)    at com.sun.proxy.$Proxy80.selectList(Unknown Source)    at com.baomidou.mybatisplus.extension.conditions.query.ChainQuery.lambda$list$1d3f6527$1(ChainQuery.java:39)    at com.baomidou.mybatisplus.extension.toolkit.SqlHelper.execute(SqlHelper.java:318)    at com.baomidou.mybatisplus.extension.conditions.ChainWrapper.execute(ChainWrapper.java:65)    at com.baomidou.mybatisplus.extension.conditions.query.ChainQuery.list(ChainQuery.java:39)    at com.train.spring_mybatis_plus.service.UserServcieImp.selectUserOrder(UserServcieImp.java:61)    at com.train.spring_mybatis_plus.service.UserServcieImp$$FastClassBySpringCGLIB$$ac685e70.invoke(<generated>)    at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)    at org.springframework.aop.framework.CglibAopProxy.invokeMethod(CglibAopProxy.java:386)    at org.springframework.aop.framework.CglibAopProxy.access$000(CglibAopProxy.java:85)    at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:703)    at com.train.spring_mybatis_plus.service.UserServcieImp$$EnhancerBySpringCGLIB$$b8ea8e2d.selectUserOrder(<generated>)    at com.train.spring_mybatis_plus.SpringMybatisPlusApplicationTests.testSelectOrderByUserId(SpringMybatisPlusApplicationTests.java:74)    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)    at java.lang.reflect.Method.invoke(Method.java:498)    at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:725)    at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)    at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)    at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:149)    at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:140)    at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:84)    at org.junit.jupiter.engine.execution.ExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(ExecutableInvoker.java:115)    at org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105)    at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)    at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)    at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)    at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)    at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:104)    at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:98)    at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:214)    at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)    at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:210)    at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:135)    at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:66)    at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:151)    at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)    at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)    at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)    at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)    at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)    at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)    at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)    at java.util.ArrayList.forEach(ArrayList.java:1257)    at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)    at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)    at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)    at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)    at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)    at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)    at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)    at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)    at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)    at java.util.ArrayList.forEach(ArrayList.java:1257)    at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)    at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)    at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)    at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)    at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)    at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)    at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)    at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)    at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)    at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35)    at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)    at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54)    at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:107)    at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88)    at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54)    at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67)    at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52)    at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114)    at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:86)    at org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:86)    at org.junit.platform.launcher.core.SessionPerRequestLauncher.execute(SessionPerRequestLauncher.java:53)    at com.intellij.junit5.JUnit5IdeaTestRunner.startRunnerWithArgs(JUnit5IdeaTestRunner.java:57)    at com.intellij.rt.junit.IdeaTestRunner$Repeater$1.execute(IdeaTestRunner.java:38)    at com.intellij.rt.execution.junit.TestsRepeater.repeat(TestsRepeater.java:11)    at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:35)    at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:235)    at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:54)Caused by: 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 'order      WHERE  (user_id IN ('3'))' at line 1    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:121)    at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)    at com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:916)    at com.mysql.cj.jdbc.ClientPreparedStatement.execute(ClientPreparedStatement.java:354)    at com.alibaba.druid.pool.DruidPooledPreparedStatement.execute(DruidPooledPreparedStatement.java:497)    at org.apache.ibatis.executor.statement.PreparedStatementHandler.query(PreparedStatementHandler.java:65)    at org.apache.ibatis.executor.statement.RoutingStatementHandler.query(RoutingStatementHandler.java:80)    at org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:65)    at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:333)    at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:158)    at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:110)    at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:90)    at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:154)    ... 88 more

这种报错是什么造成的呢?如何破

共有1个答案

毋宸
2023-11-19

Order类字段注解要用@TableField,不是 @Column

 类似资料:
  • 本文向大家介绍MyBatis-plus 模糊查询的使用,包括了MyBatis-plus 模糊查询的使用的使用技巧和注意事项,需要的朋友参考一下 在使用MyBatis-plus的时候,一些基础的增删改查可以不用再自己写sql了: 就这样,就可以实现user表的增删改查了。 模糊查询 使用userDao.selectList(queryWrapper)方法,就可以查询出一个用户列表。 如果需要模糊查询

  • 扫描器输入=新扫描器(System.in); }

  • 嗨,伙计们,我试图检索数据从我的数据库使用HQL编辑器查询。我遵循了示例“在JavaSwing应用程序中使用Hibernate”中的步骤。我的配置文件如下: 映射: 使用这个:或我得到以下错误: org.hibernate.exception.SQLGrammarExcture:无法在org.hibernate.exception.SQLStateConverter.convert(SQLStat

  • 问题内容: 我有以下代码: 哪个应该工作正常。但是我收到以下错误: 您的SQL语法有误;检查与您的MySQL服务器版本相对应的手册,以获取在’?附近使用的正确语法。第1行的较高(ARTICLE_NAME)喜欢’%?%’‘ 如果我放 该查询工作正常。上面定义了$ table,并且从GET接收了查询,并且两者都是正确的有效值。为什么会失败? 编辑:更改为: 导致错误: 警告:mysqli_stmt :

  • 我不能通过nGinx提供静态文件,而是得到404。我可以看到错误(如error.log所示),我只是不知道如何修复它。 网址。派克 settings.py (收集了一个静态文件,所有静态文件现在都在“staticfiles/”中) nginx配置 基础html 这是日志 错误日志 (静态/添加在静态url中,我看不出为什么)

  • 我需要一些帮助 我在我的proyect Spring Boot上使用JPA存储库和数据库是SQL Server2012;我的所有存储库都运行良好,但我在删除下一个查询时遇到了问题: