一般出现这种错误提示代表程序写的有问题,一般是SQL语句不对,主要有以下几种类型:

1.实体类属性和数据库表字段不对应,主要有以下几种类型错误:

  • Mapper.xml中配置的resultMap有问题,检查column和property是否对应;column和property的拼写是否有问题。 注:column对应数据库表字段,property对应实体类属性。如图1.1所示:
                                                                            

图1.1

  • SQL语句中表名访问的字段是否在数据库表中存在,如图1.2所示,bdb.dict_value中的dict_value字段如果在bdb对应的blade_dict_biz表中不存在,会导致错误。

图1.2

2.数据表字段和实体类属性的数据类型不一致,或者是在程序或SQL语句中错误的判断逻辑导致字段或属性的数据类型出现问题。

实体类:

private String remark;

Mapper.xml:

    select * from table                        AND remark = #{remark}            

注:由于remark为String类型,但select标签中由于使用了 remark != 0的判断,导致程序把remark当做数字来处理,但String是不能进行!= 0的操作的。

3.Mapper.xml中SQL语句from后面的表名不对,检查表名拼写有无错误,以及表名是否和实体类对应的表名一致。

4.Mapper.xml中SQL语句语法有问题,可能包括:

  • SQL语句中各子句的顺序写错了,关于SQL语句的书写以及子句执行流程可参考:SQL语句执行顺序,select、from、where、group by、having、order by语句位置及功能详解https://blog.csdn.net/qq_44973310/article/details/126986263?spm=1001.2014.3001.5502
  • SQL语句中的标点符号出现位置,如图2.1所示,case when标签之间不能出现逗号,但写了逗号导致错误。注:这种错误排查起来很耗费时间,平时一定要注意SQL书写规范。

图2.1

5.检查数据库地址是否正确,数据库中是否有对应的表,Reconnect数据库。