1 RequestBody映射类字段失败
- 原因
RequestBody不能解析类对应大写字母开头的字段. - 解决
(1)大写字母开头的字段,替换为小写字母头.
(2)使用Map类型接收json数据.
2 AOP切片失效
- 原因
Service注解不能新建对象. - 解决
在xml配置文件中加入bean配置类.
<bean id="testDataImpl" class="com.TestDataImpl">
同时使用Qulalifier注解验证使用类:Qualifier(“testDataImpl”)
3 多数据源配置失效
- 原因
数据源bean id重复 - 解决
修改数据源bean id为不同命名.
4 启动失败
Destroying ProtocolHandler [“ajp-nio-8009”]
5 @Value取值为null
-
原因
@Value取值为null,两种情况:对象没有放到Spring容器,通过new新建的对象,没有使用@Component注解. -
解决
通过@Autowired新建对象,将对象交给Spring容器;
类上添加@Component注解
6 @Value无法解析字符串
Could not resolve placeholder ‘data’ in string value “${data}”
- 原因
未知 - 方案
重启IDEA或VS Code或PC.
7 MyBatis保存MySQL数据失败
Cause: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Incorrect datetime value: ‘\xAC\xED\x00\x05sr\x00\x0Djava.time.Ser\x95]\x84\xBA\x1B"H\xB2\x0C\x00\x00xpw\x0A\x05\x00\x00\x07\xE4\x08\x03\x107\xF6x’ for column ‘offline_time’ at row 1
; SQL []; Data truncation: Incorrect datetime value: ‘\xAC\xED\x00\x05sr\x00\x0Djava.time.Ser\x95]\x84\xBA\x1B"H\xB2\x0C\x00\x00xpw\x0A\x05\x00\x00\x07\xE4\x08\x03\x107\xF6x’ for column ‘offline_time’ at row 1; nested exception is com.mysql.jdbc.MysqlDataTruncation: Data truncation: Incorrect datetime value: ‘\xAC\xED\x00\x05sr\x00\x0Djava.time.Ser\x95]\x84\xBA\x1B"H\xB2\x0C\x00\x00xpw\x0A\x05\x00\x00\x07\xE4\x08\x03\x107\xF6x’ for column ‘offline_time’ at row 1] with root cause
com.mysql.jdbc.MysqlDataTruncation: Data truncation: Incorrect datetime value: ‘\xAC\xED\x00\x05sr\x00\x0Djava.time.Ser\x95]\x84\xBA\x1B"H\xB2\x0C\x00\x00xpw\x0A\x05\x00\x00\x07\xE4\x08\x03\x107\xF6x’ for column ‘offline_time’ at row 1
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3534)
- 原因
MySQL驱动版本过低,问题版本为5.1.8
MyBatis版本过低3.4.2 - 方案
提高MySQL版本,5.1.37及以上
8 MyBatis缺少属性No typehandler found for property
[org.springframework.web.context.ContextLoaderListener]
org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘sqlSessionFactory’ defined in file [/home/xdq/.config/Code/User/workspaceStorage/75c69db3bc38ad03a2a3dc619135a421/adashen.vscode-tomcat/tomcat/apache-tomcat-8.5.47/webapps/data_display/WEB-INF/classes/spring/applicationContext-mybatis.xml]: Invocation of init method failed; nested exception is org.springframework.core.NestedIOException: Failed to parse mapping resource: ‘file [/home/xdq/.config/Code/User/workspaceStorage/75c69db3bc38ad03a2a3dc619135a421/adashen.vscode-tomcat/tomcat/apache-tomcat-8.5.47/webapps/data_display/WEB-INF/classes/mybatis/mappers/DeviceOnOffLineDetailMapper.xml]’; nested exception is org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. Cause: java.lang.IllegalStateException: No typehandler found for property offlineTime
-
原因
MyBatis版本低,且未配置jsr310及typeHandler. -
方案
提高MyBatis版本,3.5.5,包括jsr310及typeHandler
若MyBatis为3.4.0版本,添加依赖:
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-typehandlers-jsr310</artifactId>
<version>1.0.1</version>
</dependency>
9 MyBatis与LocalDateTime
9.1 MyBatis无法解析LocalDateTime
Could not resolve type alias ‘org.apache.ibatis.type.LocalDateTimeTypeHandler’
- 原因
SSM中MyBatis版本较低,无法解析Java8 LocalDateTime - 方案
使用Date替代LocalDateTime.
9.2 时间转化
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
SSM使用Date做时间映射,@JsonFormat解析Body入参时间字符串,@DateTimeFormat解析form-data入参时间字符串;
SpringBoot可使用LocalDateTime做时间映射.
10 MySQL写入数据Closed
- 原因
数据表未添加自增主键 - 方案
数据表添加自增主键