仅vim开发时 SpringBoot 中,Mybatis sql查询数据正常,但是返回的对象为Null
仅适用于使用vim开发时出现的问题
直接查对象可以查到log输出也正常,但是返回的list里只有长度没有数据
==> Preparing: SELECT id,username,nickname,gender,password,dept_id,avatar,mobile,status,email,create_time,create_by,update_time,update_by,is_deleted FROM sys_user ==> Parameters: <== Columns: id, username, nickname, gender, password, dept_id, avatar, mobile, status, email, create_time, create_by, update_time, update_by, is_deleted <== Row: 1, root, XXX, 0, $2a$10$xVWsNOhHrCxh5UbpCE7/HuJ.PAOKcYAqRxD2CO2nVnJS.IAXkr5aq, null, https://foruda.gitee.com/images/1723603502796844527/03cdca2a_716974.gif, 18866668888, 1, youlaitech@163.com, null, null, null, null, 0 <== Row: 2, admin, 系统管理员, 1, $2a$10$xVWsNOhHrCxh5UbpCE7/HuJ.PAOKcYAqRxD2CO2nVnJS.IAXkr5aq, 1, https://foruda.gitee.com/images/1723603502796844527/03cdca2a_716974.gif, 18866668887, 1, , 2025-04-29 13:30:25, null, 2025-04-29 13:30:25, null, 0 <== Row: 3, websocket, 测试小用户, 1, $2a$10$xVWsNOhHrCxh5UbpCE7/HuJ.PAOKcYAqRxD2CO2nVnJS.IAXkr5aq, 3, https://foruda.gitee.com/images/1723603502796844527/03cdca2a_716974.gif, 18866668886, 1, youlaitech@163.com, 2025-04-29 13:30:25, null, 2025-04-29 13:30:25, null, 0 <== Total: 3
查询单个对象时会直接报错
java.lang.IllegalArgumentException: Name for argument of type [java.lang.Long] not specified, and parameter name information not available via reflection. Ensure that the compiler uses the '-parameters' flag. at org.springframework.web.method.annotation.AbstractNamedValueMethodArgumentResolver.updateNamedValueInfo(AbstractNamedValueMethodArgumentResolver.java:186) ~[spring-web-6.2.6.jar:6.2.6] at org.springframework.web.method.annotation.AbstractNamedValueMethodArgumentResolver.getNamedValueInfo(AbstractNamedValueMethodArgumentResolver.java:161) ~[spring-web-6.2.6.jar:6.2.6] at org.springframework.web.method.annotation.AbstractNamedValueMethodArgumentResolver.resolveArgument(AbstractNamedValueMethodArgumentResolver.java:107) ~[spring-web-6.2.6.jar:6.2.6] at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:122) ~[spring-web-6.2.6.jar:6.2.6] at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:227) ~[spring-web-6.2.6.jar:6.2.6] at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:181) ~[spring-web-6.2.6.jar:6.2.6] at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118) ~[spring-webmvc-6.2.6.jar:6.2.6] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:986) ~[spring-webmvc-6.2.6.jar:6.2.6] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:891) ~[spring-webmvc-6.2.6.jar:6.2.6] at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-6.2.6.jar:6.2.6] at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1089) ~[spring-webmvc-6.2.6.jar:6.2.6] at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:979) ~[spring-webmvc-6.2.6.jar:6.2.6] .............................
并且其他配置一切正常,但是就是无法获取到数据
查了很多文章,都说是配置问题,但是我反复确认自己的配置没有问题,后来发现是因为lombok的毛病。lombok和其他包不同,不是在pom中导入了就可以正常使用,你可以正常写,language server 也能获取到一些相关包和注解,但是编译后就不正常。通常情况下lombok是需要IDE的,所以直接使用vim会导致报错,会出现找不到包等等错误,需要配置文件指定lombok
我用的是coc.vim所以直接修改CocConfig。在java.jdt.ls.vmargs里添加lombok的位置并添加"java.jdt.ls.lombokSupport.enabled": true配置启用lombok
-javaagent:\"...~/.config/coc/extensions/coc-java-data/server/lombok-1.18.38.jar\"
"java.jdt.ls.lombokSupport.enabled": true
如果你的lombok位置不在coc插件目录下需要改成你自己的路径,这里lombok在下载后建议把名字加上版本号,否则启动的时候可能会出现找不到版本的报错
参考 https://github.com/neoclide/coc-java/issues/27
coc 也可以下载coc-lombok 但是我试了一下效果不太好,而且coc-lombok在github上看确实是很长时间没有更新过了