谢谢老哥提醒
那就搜索一个这个关键词是在哪儿写的,是不是没有写对
解决方法:
在SpringBoot的启动类上,使用@MapperScan注解时引入了错误的包下的。 正确的应该是:import tk.mybatis.spring.annotation.MapperScan; 错误的引入了:import org.mybatis.spring.annotation.MapperScan;
问题已经解决,自己在generatorConfig.xml 中配置了两个不同的table,一个不用的table 生成了pojo,mapper以及*mapper.xml,但是项目中没有引用无用的table,所以报错,在 generatorConfig.xml 除去那个无用的table即可。
除去:
<table tableName="aaa"></table>
参考这个csdn网址,解决了
用@tk.mybatis.spring.annotation.MapperScan
检查下数据库连接 或者本地数据是否建表呢?
首先检查一下数据库URL字段是否存在语病;
其次,在SysUserMapper.xml中将重复的<resultMap>删除只留下一个;
最后,在ImoocApplication.java中将MapperScan所import的包名改为import tk.mybatis.spring.annotation.MapperScan;。
没扫描到吧
应该是application.properties中.mapper.mappers配置错了,我之前就是写错了个字母
@MapperScan("包名1",“包名2”),SysUserMapper类在这2个包里吗?不然扫不到。
截图好模糊,根本看不清哦。你是说找不到MyMapper这个类吗,这个类应该是要自己手动创建的吧。
https://github.com/leechenxiang/imooc-springboot-starter这个是老师的项目地址,下载至本地,将idworks包到代码拷贝入程序即可。
at tk.mybatis.spring.mapper.SpringBootBindUtil$SpringBoot2Bind.bind(SpringBootBindUtil.java:133)
Caused by: java.lang.reflect.InvocationTargetException: null
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_161]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[na:1.8.0_161]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[na:1.8.0_161]
at java.lang.reflect.Method.invoke(Unknown Source) ~[na:1.8.0_161]
at tk.mybatis.spring.mapper.SpringBootBindUtil$SpringBoot2Bind.bind(SpringBootBindUtil.java:125) ~[mapper-spring-1.0.0.jar:na]
空指针,断点打到SpringBootBindUtil.java:125 133 行 进行下查看
https://github.com/abel533/MyBatis-Spring-Boot/issues/92
可以操作数据库了 开心
这个注解@MapperScan,导入import tk.mybatis.spring.annotation.MapperScan; 这个包就OK了
依赖的jar包有问题!
请看一下 controller中注入的service 是否在类声明中使用了@Service修饰
是的我用的是这个 import org.n3r.idworker.Sid;
生成id的,实现id自增
我点进去看了,这个是视频上说的这个老哥自己写的jar包,牛逼
试试将相关的jar包更新
偶我找到我的原因了,是在application.properties配置文件:在配置mapper.mappers 时,指定的MyMapper的路径少写了个字母,导致找不到MyMapper,把路径改对就好了?,这种错最难找了!!!
NoClassDefFoundError: org/springframework/boot/bind/RelaxedDataBinder
boot里面找不到包,org.springframework.boot.bind 包已经删掉了,导致RelaxedPropertyResolver这个方法已经不可用了.
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.0</version>
</dependency>
这个依赖删掉即可~~
哎,我傻了呀,解决了。我一开始思路不对,我以为是jdbcType出了什么问题,想想userMapper.xml是自动生成的不应该呀,后来以为是我application.properties里的下面这两句没生效,导致什么类加载器没用对产生了冲突
restart.include.mapper=/mapper-[\\w-\\.]+jar
restart.include.pagehelper=/pagehelper-[\\w-\\.]+jar
然后我就注掉了devtools的依赖,但是还是不对。后来一行行看下面的错误,发现还是service层的问题,最后才找到了……我的方法是return userMapper.selectByPrimaryKey(id);这个primaryKey数据库里建表时候是指定了,但是自动生成的实体类倒是干干净净的,它应该是没找到这个primaryKey,然后刚好匹配下来age是Integer类型,才跟我扯这个“java.lang.String cannot be cast to java.lang.Integer”和”Error setting non null for parameter #5 with JdbcType null . ”这点错误卡了我一个晚上真是太傻了……话说自动生成怎么不那么智能呢,主键不给实体类自动指定掉
在SysUserMApper接口上面添加一个
@Repository
就行了
代码是全的,不过我在用idea的运行的时候,会报一些错误,相对应的解决一下就好了,
都加上这个注解就可以了,可能还有其他问题,如果还有问题的话,你把错误信息贴一下