MyBatis 调用存储过程
使用存储过程 in 和 out 参数
<select id="findAddress" statementType="CALLABLE"> {call find_address( #{1,mode=IN,jdbcType=VARCHAR}, #{2,mode=IN,jdbcType=VARCHAR}, #{3,mode=OUT,jdbcType=VARCHAR}, )} </select>
定义Mapper接口方法
void findAddress(String firstName,String lastName,String address );
调用 findAddress 方法后 address 参数保存OUT参数的输出值
存储过程游标
参数类:
public class SystemRole { private int roleId; private String roleName,roleMemo; // getter、setter 略 }
public class UserParameter { private String firstName,lastName,address; private List<SystemRole> roleList; // getter、setter 略 }
映射配置:
<resultMap id="roleMap" type="SystemRole"> <id property="roleId" column="role_id" /> <id property="roleName" column="role_name" /> <id property="roleMemo" column="role_memo" /> </resultMap> <select id="findAddress" parameterType="UserParameter" statementType="CALLABLE"> {call find_address( #{firstName,mode=IN,jdbcType=VARCHAR}, #{lastName,mode=IN,jdbcType=VARCHAR}, #{address,mode=OUT,jdbcType=VARCHAR}, #{roleList,mode=OUT,jdbcType=CURSOR,javaType=ResultSet,resultMap=roleMap}, )} </select>
Mapper接口方法
void findAddress(UserParameter parameter);
测试代码:
UserParameter parameter = new UserParameter(); parameter.setFirstName("a"); parameter.setLastName("b"); this.systemUserMapper.findAddress(parameter); System.out.println(parameter.getAddress()); for (SystemRole systemRole : parameter.getRoleList()) { System.out.println(systemRole); }

浙公网安备 33010602011771号