Closed MichaelXcy closed 5 years ago
@Param("ew")
@param("ew")
大神,这个是啥意思?加在哪里呢?
放你自己写的 method 的入参 wrapper 前面
method 的入参 wrapper 前面
我调用的是继承自B阿瑟
放你自己写的 method 的入参 wrapper 前面
我调用的是继承自IService的方法,不是自己写的方法。IService里面为啥没有这个注解的呀 我更换了3.1.1, 3.1.0,3.0.7.1 三个版本都是同样的错误。
那就是没用对,去看 samples
那就是没用对,去看 samples
哦,为啥 mybatis-plus-extension.jar 这个包里面的顶级IService接口里面的方法,wrapper前面都没有加这个@param("ew") 注解的呢?我看了IService所有的方法都没加,难道是我引用的包有问题?
这是 mapper 里的
这是 mapper 里的
哦哦,但是奇怪的是,这个代码,直接在IDEA启动本地跑的时候是正常的,打包部署到linux环境就不行。
那就是没用对,去看 samples
官网的sample没看到有使用 LambdaQueryWrapper 的呀,您可以指点一下或者哪里有这个使用的例子么?现在项目急用,碰到这个问题搞不定了,多谢大侠
本地可以就检查 jar 包的依赖有没有冲突,检查依赖的 jar 是否一致
本地可以就检查 jar 包的依赖有没有冲突,检查依赖的 jar 是否一致
检查了没有冲突的。我的使用方法是:
1、MpSmsValidateInfoServiceImpl 这个业务服务类继承ServiceImpl如下:
public class MpSmsValidateInfoServiceImpl extends ServiceImpl<IMpSmsValidateInfoMapper, MpSmsValidateInfo> implements IMpSmsValidateInfoService {
.....
}
2、public interface IMpSmsValidateInfoMapper extends BaseMapper<MpSmsValidateInfo>
3、public interface IMpSmsValidateInfoService extends IService<MpSmsValidateInfo>
4、在业务服务实现类中使用:
LambdaQueryWrapper<MpSmsBlackList> wrapper = new QueryWrapper<MpSmsBlackList>().lambda();
wrapper.eq(MpSmsBlackList::getPhoneNo, phoneNo);
就在代码执行到Service里面带 :: 这个Lambda表达式时就出错了。
只要是maven打包之后启动访问就出错,IDEA里面启动访问就没错。
自行检查服务器 jdk 版本,只支持 openJDK 和 oracleJDK 8+
把你调用的代码贴全一点啊,还有错误日志也贴全一点啊
把你调用的代码贴全一点啊,还有错误日志也贴全一点啊
代码调用处:
`@Service @Slf4j @Transactional public class MpSmsValidateInfoServiceImpl extends ServiceImpl<IMpSmsValidateInfoMapper, MpSmsValidateInfo> implements IMpSmsValidateInfoService {
@Override
public String getVerificationCode(String phoneNo, String openId) throws ServiceException {
log.error("进入SMSValidate-0");
// 1.号码是否在黑名单
LambdaQueryWrapper<MpSmsBlackList> wrapper = new QueryWrapper<MpSmsBlackList>().lambda();
wrapper.eq(MpSmsBlackList::getPhoneNo, phoneNo); // 执行到这一行就出错了,出错日志如下
`
异常日志:
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.builder.BuilderException: Error evaluating expression 'ew.sqlSegment != null and ew.sqlSegment != '' and ew.nonEmptyOfWhere'. Cause: org.apache.ibatis.ognl.OgnlException: sqlSegment [com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: This is impossible to happen]
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:982)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:873)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1623)
at org.eclipse.jetty.websocket.server.WebSocketUpgradeFilter.doFilter(WebSocketUpgradeFilter.java:214)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1610)
at org.springframework.boot.web.filter.ApplicationContextHeaderFilter.doFilterInternal(ApplicationContextHeaderFilter.java:55)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1610)
at com.alibaba.druid.support.http.WebStatFilter.doFilter(WebStatFilter.java:123)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1610)
at org.springframework.boot.actuate.trace.WebRequestTraceFilter.doFilterInternal(WebRequestTraceFilter.java:111)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1610)
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1610)
at org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal(HttpPutFormContentFilter.java:109)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1610)
at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:93)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1610)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1610)
at org.springframework.boot.actuate.autoconfigure.MetricsFilter.doFilterInternal(MetricsFilter.java:103)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1610)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:540)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:146)
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:257)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1701)
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1345)
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:480)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1668)
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1247)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
at org.eclipse.jetty.server.Server.handle(Server.java:502)
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:370)
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:267)
at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:305)
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103)
at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:117)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.produce(EatWhatYouKill.java:132)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:765)
at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:683)
at java.lang.Thread.run(Thread.java:748)
Caused by: org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.builder.BuilderException: Error evaluating expression 'ew.sqlSegment != null and ew.sqlSegment != '' and ew.nonEmptyOfWhere'. Cause: org.apache.ibatis.ognl.OgnlException: sqlSegment [com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: This is impossible to happen]
at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:77)
at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:446)
at com.sun.proxy.$Proxy102.selectOne(Unknown Source)
at org.mybatis.spring.SqlSessionTemplate.selectOne(SqlSessionTemplate.java:166)
at com.baomidou.mybatisplus.core.override.PageMapperMethod.execute(PageMapperMethod.java:101)
at com.baomidou.mybatisplus.core.override.PageMapperProxy.invoke(PageMapperProxy.java:64)
at com.sun.proxy.$Proxy109.selectOne(Unknown Source)
at com.sf.cbil.mp.member.service.impl.SysconfigServiceImpl.querySmsMaxCount(SysconfigServiceImpl.java:98)
at com.sf.cbil.mp.member.service.impl.SysconfigServiceImpl$$FastClassBySpringCGLIB$$f60f4594.invoke(
自行检查服务器 jdk 版本,只支持 openJDK 和 oracleJDK 8+
我的是springboot的微服务项目,现在本地打包后,直接本地启动这个微服务的jar包,访问也是一样的出错,但是这个微服务直接在IDEA里面启动访问就完全正常,我本机只有一个jdk,版本是 1.8.0_191,IDEA里面配置的也是引用了我本地安装的这个jdk版本的。
@miemieYaho @yuxiaobin
打扰了,多谢两位,现在可以了,打包的问题。springboot打包时不指定jdk版本用的就是他默认的,不是1.8.
MybatisPlus 很好很强大,棒棒哒~ 用了好几年了,加油
当前使用版本(必须填写清楚,否则不予处理)
3.1.0
该问题是怎么引起的?*([最新版](https://search.maven.org/search?q=g:com.baomidou%20a:mybatis-)上已修复的会直接close掉)**
LambdaQueryWrapper wrapper = new QueryWrapper().lambda();
wrapper.eq(MpSmsBlackList::getPhoneNo, phoneNo);
这么写查询的话,这个条件构造器还没有传到select里面,就报错了,提示: nested exception is org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.builder.BuilderException: Error evaluating expression 'ew.sqlSegment != null and ew.sqlSegment != '' and ew.nonEmptyOfWhere'. Cause: org.apache.ibatis.ognl.OgnlException: sqlSegment [com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: This is impossible to happen
重现步骤
1、定义条件构造器: LambdaQueryWrapper wrapper = new QueryWrapper().lambda();
wrapper.eq(MpSmsBlackList::getPhoneNo, phoneNo);
2、打包环境是jdk1.8.0_191、运行环境是Linux 的jdk1.8.0_12
3、启动程序,访问接口,执行到这个条件构造器的时候就报错
报错信息
nested exception is org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.builder.BuilderException: Error evaluating expression 'ew.sqlSegment != null and ew.sqlSegment != '' and ew.nonEmptyOfWhere'. Cause: org.apache.ibatis.ognl.OgnlException: sqlSegment [com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: This is impossible to happen