1、语句结尾不要加分号,否则报错:SQL 命令未正确结束
2、springboot中,mapper.xml和mapper接口如果不在同一个包下,需要在application文件中加上:
mybatis:mapper-locations: classpath:com/demo/mapper/impl/*.xml
3、xml中的Statement,必须加上resultMap,否则报异常:
org.apache.ibatis.executor.ExecutorException: A query was run and no Result Maps were found for the Mapped Statement
4、
Error querying database. Cause: java.sql.SQLSyntaxErrorException: ORA-00936: 缺失表达式
The error may involve defaultParameterMap
### The error occurred while setting parameters
### SQL: select sum(a.transamount) amount,substr(F_WEEKBH,7,6) week,substr(F_WEEKBH,0,6) month from DW_CAPPLAN_F_DAILYPAYMENTTRANSACTIONS a left join ( select distinct F_DATE,F_WEEKBH from lsa_narrow_sk_zjjhday ) on to_char(a.trandate,'yyyymmdd')=F_DATE where a.trandate <date ? and to_char ( a.trandate , 'yyyymm') =? group by F_WEEKBH
### Cause: java.sql.SQLSyntaxErrorException: ORA-00936: 缺失表达式
bad SQL grammar []; nested exception is java.sql.SQLSyntaxErrorException: ORA-00936: 缺失表达式
] with root cause
oracle.jdbc.OracleDatabaseException: ORA-00936: 缺失表达式
解决:把#{}换成${}
5、xml中<替换为<
>替换为>
6、查询结果映射的实体对象为空(不是某个属性为空,而是对象为空)
java.lang.NullPointerException: null
解决:当sql字段返回值为空时 默认不映射。返回的字段都为空,service处理或application文件加上:mybatis-plus.configuration.call-setters-on-nulls=true
7、打印sql语句
在application文件添加logging.level.mapper路径,例如:
logging.level.com.demo.mapper
8、java.lang.IllegalArgumentException: Result Maps collection does not contain value
解决:resultMap=""的值填写有误
9、
### Error querying database. Cause: java.sql.SQLException: 无效的 SQL 类型: sqlKind = UNINITIALIZED
### Cause: java.sql.SQLException: 无效的 SQL 类型: sqlKind = UNINITIALIZED
; uncategorized SQLException; SQL state [99999]; error code [17439]; 无效的 SQL 类型: sqlKind = UNINITIALIZED; nested exception is java.sql.SQLException: 无效的 SQL 类型: sqlKind = UNINITIALIZED] with root cause
原因:select标签后面有多余的">
10、mapper返回的list集合,数量正确,但属性为null
解决:resultMap中的column与property需一致,包括大小写也要一样
11、
There is no setter for property named 'SNAME' in 'class com.xxx.entity.xxx'
解决:resultMap中的column与property需一致,包括大小写也要一样