我如何解决它使用mybatis从postgresql的过程调用中返回一个表或setof。谢谢 psotgreaql:
CREATE OR REPLACE FUNCTION public.p_find_battery_detail(
item character varying,
vaulestr character varying,
islimit boolean)
RETURNS TABLE(
id bigint,
no character varying,
chassis character varying,
channel character varying,
module character varying,
isformat bit,
isgrad bit,
ismatch bit,
ismastop bit,
sfile json,
sftimesign character varying,
groupclass character varying,
gradtimesign character varying,
gradf json)
LANGUAGE plpgsql
mybatis in java wiht annotation
@Select("call p_find_battery_detail(#{0}, #{1}, #{2})")
@Options(statementType = StatementType.CALLABLE)
List<BatteryInfoDetail> findBatteryDetail(String itemStr, String valueStr, boolean isLimit);
当我运行这个serch时,会抛出一些错误:
org.apache.ibatis.binding.BindingException: Parameter '0' not found. Available parameters are [arg2, arg1, arg0, param3, param1, param2]
and so on....
答案 0 :(得分:1)
前进的最短路径是应用错误消息提供的提示:
@Select("call p_find_battery_detail(#{arg0}, #{arg1}, #{arg2})")
进一步按注释命名参数,以便在查询中重用此名称:
@Select("call p_find_battery_detail(#{itemStr}, #{valueStr}, #{isLimit})")
@Options(statementType = StatementType.CALLABLE)
List<BatteryInfoDetail> findBatteryDetail(@Param("itemStr") String itemStr, Param("valueStr") String valueStr, Param("isLimit") boolean isLimit);
params可能有你想要的任何名字。
答案 1 :(得分:0)
@Select("select * from p_find_battery_detail(#{itemStr}, #{valueStr}, #{isLimit})")
List<BatteryDetail> findAll(@Param("itemStr") String itemStr, @Param("valueStr") String valueStr, @Param("isLimit") boolean isLimit);