<resultMap id="TRolesResultdele" class="RolesBean">
<result property="pid" column="p_id" />
<result property="pstatus" column="p_status" />
<result property="perror" column="p_error" />
</resultMap>
<parameterMap class="java.util.HashMap" id="rolesParadele">
<parameter property="roleid" javaType="java.lang.Integer" jdbcType="int" mode="IN" />
<parameter property="rolename" javaType="java.lang.String" jdbcType="varchar" mode="IN" />
<parameter property="remarks" javaType="java.lang.String" jdbcType="varchar" mode="IN" />
<parameter property="priv" javaType="java.lang.String" jdbcType="varchar" mode="IN" />
<parameter property="adminid" javaType="java.lang.Integer" jdbcType="int" mode="IN" />
<parameter property="sys_valid" javaType="java.lang.Integer" jdbcType="int" mode="IN" />
<parameter property="id" javaType="java.lang.Integer" jdbcType="int" mode="INOUT" />
<parameter property="status" javaType="java.lang.Integer" jdbcType="int" mode="INOUT" />
<parameter property="error" javaType="java.lang.String" jdbcType="varchar" mode="INOUT" />
</parameterMap>
<procedure id="deleByRolesProc" parameterMap="rolesParadele" resultMap="TRolesResultdele">
{call pkg_priv_p_admin_roleinfo(?,?,?,?,?,?,?,?,?)}
</procedure>
java后台调用的方法:
public int DeleteOneRoles(int tRolesId) {
super.init();
HashMap<String, Object> paramMap = new HashMap<String, Object>();
paramMap.put("roleid", tRolesId);
paramMap.put("rolename", "rose");
paramMap.put("remarks", "rem");
paramMap.put("priv", "1,2");
paramMap.put("adminid", 1);
paramMap.put("sys_valid", 0);
paramMap.put("id", tRolesId);
paramMap.put("status", 1);
paramMap.put("error", "error");
System.out.println(tRolesId+ "tros");
try {
RolesBean rb=(RolesBean) super.sqlMap.queryForObject("deleByRolesProc", paramMap);
System.out.println(rb+ " remark");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return 0;
但是返回的结果 RolesBean为空。。但是直接执行存储过程,可以删除该数据。这是什么原因啊,控制台没任何错误。。
8 个解决方案
#1
ibatis调用存储过程 返回值 写法应该不是这样的
类似{?=call pkg_priv_p_admin_roleinfo(?,?,?,?,?,?,?,?,?)}这样的 然后在
<parameterMap class="java.util.HashMap" id="rolesParadele">中配置输出类型
类似{?=call pkg_priv_p_admin_roleinfo(?,?,?,?,?,?,?,?,?)}这样的 然后在
<parameterMap class="java.util.HashMap" id="rolesParadele">中配置输出类型
#2
要删除数据的存储过程,操作不配事务,用查询方法执行,搞笑呢?
改成用delete方法调,前面开启事务,后面提交事务。
改成用delete方法调,前面开启事务,后面提交事务。
#4
用delete方法,但是一直返回-1,也是执行失败,这是为什么呢。
#5
存储过程只要执行了,就和ibatis没有关系了。
你封装了那么多out参数,不就是为了监视运行状况吗,把错误信息返回就知道为什么失败了。
#6
现在是这么个情况,返回直接为空,执行存储过程失败,本来是有信息返回的,但是接收这个信息的实体类一直为空,这是为什么呢,也没有报任何错误。
#7
#8
楼主求救,我也遇到同样问题,存储过程中有修改语句并且反回数据集合,可是仅返回了数据集合,存储过程中的修改语句不执行。
#1
ibatis调用存储过程 返回值 写法应该不是这样的
类似{?=call pkg_priv_p_admin_roleinfo(?,?,?,?,?,?,?,?,?)}这样的 然后在
<parameterMap class="java.util.HashMap" id="rolesParadele">中配置输出类型
类似{?=call pkg_priv_p_admin_roleinfo(?,?,?,?,?,?,?,?,?)}这样的 然后在
<parameterMap class="java.util.HashMap" id="rolesParadele">中配置输出类型
#2
要删除数据的存储过程,操作不配事务,用查询方法执行,搞笑呢?
改成用delete方法调,前面开启事务,后面提交事务。
改成用delete方法调,前面开启事务,后面提交事务。
#3
#4
用delete方法,但是一直返回-1,也是执行失败,这是为什么呢。
#5
存储过程只要执行了,就和ibatis没有关系了。
你封装了那么多out参数,不就是为了监视运行状况吗,把错误信息返回就知道为什么失败了。
#6
现在是这么个情况,返回直接为空,执行存储过程失败,本来是有信息返回的,但是接收这个信息的实体类一直为空,这是为什么呢,也没有报任何错误。
#7
#8
楼主求救,我也遇到同样问题,存储过程中有修改语句并且反回数据集合,可是仅返回了数据集合,存储过程中的修改语句不执行。