1、 问题一:No serializer found for class com.example.wjtest.entity.Labels and no properties discovered to create BeanSerializer
解决方式:
在实体类中添加属性的get方法,或者把实体类的访问权限由private修改为public。也就是说要保证该实体类的属性可以被获取到。
2、问题二:
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)
问题原因:
可能会有多种原因:要么就是xml的namespace配置是否正确,或者userMapper接口文件中的方法,在xml中没有对应;或者就是mybatis.mapper-locations的地址配置错误等。
总得来说就是3个原因:
第一,找不到文件(没有文件或mybatis.mapper-locations的路径配置错误);
mybatis.mapper-locations=classpath:xmlMapper/*/*.xml #检查该路径是否正确
第二,xml文件与接口文件没有正确映射;
第三,则是xml文件中与接口文件中的方法不一致。
解决方式:
分别比对问题原因中所说的三个原因,我本次出现该问题的原因就是mybatis.mapper-locations的路径配置错误,所以直接修改为正确的路径地址即可解决。
3、问题三:前端调用可以走到后端,却显示404的问题.
问题原因:
Spring是用@RequestMapping注解进行后端API映射的,而@ResponseBody 是用来把返回对象自动序列化成HttpResponse的。因此这里直接在Controller类上这样写注解是有问题的。
@RestController("/Mgserver")
public class UserController {}
解决方式:
将原来的
@RestController("/Mgserver")
修改为
@RestController
@RequestMapping("/Mgserver")
4、问题四:
2019-06-14 15:44:35.300 ERROR 12376 --- [nio-8888-exec-2] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.type.TypeException: Could not set parameters for mapping: ParameterMapping{property='age', mode=IN, javaType=class java.lang.Integer, jdbcType=INTEGER, numericScale=null, resultMapId='null', jdbcTypeName='null', expression='null'}. Cause: org.apache.ibatis.type.TypeException: Error setting non null for parameter #3 with JdbcType INTEGER . Try setting a different JdbcType for this parameter or a different configuration property. Cause: java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer] with root cause
java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer
问题原因:
接口的参数使用的是Map
int addUser(Map<String, Object> map);
在xml映射文件里面,parameterType又使用了对象:
解决方式:
将xml映射文件里面的parameterType修改为“map”即可。
附:个人在增删改查方法里面直接使用map而不用对象做参数的原因有二
1、可以精简多行代码;
对于新增用户的需求,若是使用对象做参数,代码如下:
Users user = new Users();
String name = (String) map.get("name");
Integer age = (Integer) map.get("age");
String sex =(String) map.get("sex");
String hobby =(String) map.get("hobby");
user.setAge(age);
user.setHobby(hobby);
user.setName(name);
user.setSex(sex);
userMapper.addUser(user);
若是参数更多了,那岂不是代码行数多得更要吓人。
若是使用map作为参数,调用新增方法,一行代码即可搞定:
userMapper.addUser(map);