Java错误

291 阅读2分钟

Mybatis报错Mapper method 'xxx' has an unsupported return type

说明sql语句已经执行成功,数据库数据已经收到sql语句影响,但是返回类型错误。

insert,delete,update添删改的返回类型为int,将增删改的接口改为int或者void,spring boot项目里面,对应的语句mapper文件中必须得是int或者void

select可以是自定义对象或者list、map。注意resultType和resultMap的使用

Mybatis报错Result Maps conllection does not contain value for java.lang.Integer

mapper配置文件(即写sql语句的文件)某个select返回为:resultMap=" java.lang.Integer",改为resultType即可

不一定是报错文件的位置,可能是其他mapper配置文件。-----搜索resultMap=" java.lang.Integer"找到即可


 spring文件报错:Exception is com.microsoft.sqlserve.jdbc.SQLServerException:多次为'XXXXX'指定了列'xx'。

报错原因:sql语句查询时,多次找到重复字段。虽然对表取了别名,但在分页查询时两张表合并成了*,有重复字段时导致无法识别。

解决办法:修改其中的重复字段名。

例子:报错时候语句:

SELECT
   *
FROM
    Scs_BoardBasicDataHandle AS main
LEFT JOIN  Scs_ShipInfo AS ssi ON ssi.ship_id = main.ship_id
LEFT JOIN Hrms_Emp AS emp ON main.emp_id = emp.empid
JOIN (......
改为:
SELECT
    main.emp_id as EmpID,
    emp.EmpName as EmpName
FROM
    Scs_BoardBasicDataHandle AS main
LEFT JOIN  Scs_ShipInfo AS ssi ON ssi.ship_id = main.ship_id
LEFT JOIN Hrms_Emp AS emp ON main.emp_id = emp.empid
JOIN (......
为其指定输出列。

 spring文件报错:nested exception is org.apache.ibatis.binding.BindingException: Parameter 'XXX' not found. Available parameters are [XXXXX, validTime, time, param3, param4, param1, shipId, param2]  

报错原因:Mapper文件进行多参数传递时,同时传递了对象参数和基础数据参数

解决方法:将基础数据参数放入对象参数中,可进行适当隐藏处理(最简单解决方法)

例子:mapper文件中原源代码:

List<ResponseEmpList> getOnShipList(@Param("shipId")Integer shipId, @Param("time")String time, @Param("validTime")Integer validTime,
@Param("c3OnShipList")QueryC3OnShipList c3OnShipList);
后修改为:
List<ResponseEmpList> getOnShipList(QueryC3OnShipList c3OnShipList);

同时,通过查阅网友处理方法,得到相似问题解决方法:
1.Mapper文件加@Param注释,比如:
@Param("time")String time
2.sql语句加jdbcType=INTEGER,如:
WHERE
    card_time BETWEEN dateadd(hour ,-(#{validTime},jdbcType=INTEGER) ,#{time})AND #{time}