baomidou中mybatisplus的selectOne遇到的坑

在使用baomidou的mybatisplus进行数据查询时,为提高效率添加了selectOne方法,但在生产环境中出现空指针异常。尽管在测试环境中未发现问题,但在分析prd数据后仍无法复现该错误。最终通过增加判空处理解决了这个问题。
   最近写项目用的baomidou的mybatisplus,感觉是真的挺好用的,功能也很强大,但是还是遇到了一个坑。
   正常情况下用selectOne进行查询是:
Product prd = productMapper.selectOne(Wrappers.<Product>lambdaQuery()
                    .eq(Product::getPrdId, prdId));

后面我为了查询速度能快一点,就加了一个select:

Product prd = productMapper.selectOne(Wrappers.<Product>lambdaQuery()
					.select(Product::getPrdName)
                    .eq(Product::getPrdId, prdId));
if(StringUtils.isBlank(prd.getPrdName())){
return;
}

这样写完之后测试,没有任何问题,一上生产环境报错了,空指针。。。
最后检查的结果是prd为空了,然后我又把生产环境的数据拿过来,再去测试,还是没问题!!!完全不知道咋回事,没办法,只能再加个判空了。

java.util.concurrent.ExecutionException: java.lang.reflect.InvocationTargetException at java.util.concurrent.FutureTask.report(FutureTask.java:122) at java.util.concurrent.FutureTask.get(FutureTask.java:206) at com.xxl.job.core.thread.JobThread.run(JobThread.java:153) Caused by: java.lang.reflect.InvocationTargetException at sun.reflect.GeneratedMethodAccessor452.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at com.xxl.job.core.handler.impl.MethodJobHandler.execute(MethodJobHandler.java:31) at com.xxl.job.core.thread.JobThread$1.call(JobThread.java:146) at com.xxl.job.core.thread.JobThread$1.call(JobThread.java:139) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.lang.Thread.run(Thread.java:748) Caused by: org.apache.ibatis.exceptions.TooManyResultsException: Expected one result (or null) to be returned by selectOne(), but found multiple records at com.baomidou.mybatisplus.core.mapper.BaseMapper.selectOne(BaseMapper.java:239) at java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:627) at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:166) at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89) at com.sun.proxy.$Proxy229.selectOne(Unknown Source) at com.baomidou.mybatisplus.core.mapper.BaseMapper.selectOne(BaseMapper.java:214) at java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:627) at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:166) at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89) at com.sun.proxy.$Proxy229.selectOne(Unknown Source) at com.ruoyi.system.task.EquipmentTask.transportEquipmentPlc(EquipmentTask.java:1267) ... 8 more这是哪出错了
08-30
com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: Failed to process, Error SQL: SELECT ifnull(max(tqp.sort_index), 0) AS sort_index FROM tab_queue_patient tqp WHERE DATE(tgq.check_time) BETWEEN (CURDATE() - INTERVAL (24 - 6 HOUR) AND (CURDATE() + INTERVAL 6 HOUR) and tqp.is_repeat != 1 and tqp.is_reservation is null and tqp.department = ? and tqp.doctor_id = ? at com.baomidou.mybatisplus.core.toolkit.ExceptionUtils.mpe(ExceptionUtils.java:39) at com.baomidou.mybatisplus.extension.parser.JsqlParserSupport.parserSingle(JsqlParserSupport.java:51) at com.baomidou.mybatisplus.extension.plugins.inner.TenantLineInnerInterceptor.beforeQuery(TenantLineInnerInterceptor.java:72) at com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor.intercept(MybatisPlusInterceptor.java:78) at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:59) at com.sun.proxy.$Proxy454.query(Unknown Source) at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:154) ... 164 common frames omitted Caused by: java.util.concurrent.ExecutionException: net.sf.jsqlparser.parser.ParseException: Encountered unexpected token:<EOF> at line 19, column 33. Was expecting one of: "&" ")" "::" "<<" ">>" "[" "^" "|" at java.util.concurrent.FutureTask.report(Unknown Source) at java.util.concurrent.FutureTask.get(Unknown Source) at net.sf.jsqlparser.parser.CCJSqlParserUtil.parseStatement(CCJSqlParserUtil.java:258) at net.sf.jsqlparser.parser.CCJSqlParserUtil.parse(CCJSqlParserUtil.java:81) at net.sf.jsqlparser.parser.CCJSqlParserUtil.parse(CCJSqlParserUtil.java:47) at com.baomidou.mybatisplus.extension.parser.JsqlParserGlobal.parse(JsqlParserGlobal.java:39) at com.baomidou.mybatisplus.extension.parser.JsqlParserSupport.parserSingle(JsqlParserSupport.java:48) ... 169 common frames omitted
09-17
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值