求大神解决,ibatis执行删除存储过程,没报错,没任何输出,数据库数据也没删掉

时间:2022-06-04 21:41:55
下面是ibatis配置:
<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">中配置输出类型

#2


要删除数据的存储过程,操作不配事务,用查询方法执行,搞笑呢?

改成用delete方法调,前面开启事务,后面提交事务。

#4


引用 2 楼 forgetsam 的回复:
要删除数据的存储过程,操作不配事务,用查询方法执行,搞笑呢?

改成用delete方法调,前面开启事务,后面提交事务。


用delete方法,但是一直返回-1,也是执行失败,这是为什么呢。

#5


引用 4 楼 yibiao452249711 的回复:
引用 2 楼 forgetsam 的回复:
要删除数据的存储过程,操作不配事务,用查询方法执行,搞笑呢?

改成用delete方法调,前面开启事务,后面提交事务。

用delete方法,但是一直返回-1,也是执行失败,这是为什么呢。


存储过程只要执行了,就和ibatis没有关系了。

你封装了那么多out参数,不就是为了监视运行状况吗,把错误信息返回就知道为什么失败了。

#6


引用 5 楼 forgetsam 的回复:
引用 4 楼 yibiao452249711 的回复:
引用 2 楼 forgetsam 的回复:
要删除数据的存储过程,操作不配事务,用查询方法执行,搞笑呢?

改成用delete方法调,前面开启事务,后面提交事务。

用delete方法,但是一直返回-1,也是执行失败,这是为什么呢。

存储过程只要执行了,就和ibatis没有关系了。

你封装了那么多out参数,不就是为了……


现在是这么个情况,返回直接为空,执行存储过程失败,本来是有信息返回的,但是接收这个信息的实体类一直为空,这是为什么呢,也没有报任何错误。

#7


该回复于2013-06-01 09:15:17被管理员删除

#8


楼主求救,我也遇到同样问题,存储过程中有修改语句并且反回数据集合,可是仅返回了数据集合,存储过程中的修改语句不执行。

#1


ibatis调用存储过程 返回值   写法应该不是这样的

类似{?=call pkg_priv_p_admin_roleinfo(?,?,?,?,?,?,?,?,?)}这样的  然后在

<parameterMap class="java.util.HashMap" id="rolesParadele">中配置输出类型

#2


要删除数据的存储过程,操作不配事务,用查询方法执行,搞笑呢?

改成用delete方法调,前面开启事务,后面提交事务。

#3


#4


引用 2 楼 forgetsam 的回复:
要删除数据的存储过程,操作不配事务,用查询方法执行,搞笑呢?

改成用delete方法调,前面开启事务,后面提交事务。


用delete方法,但是一直返回-1,也是执行失败,这是为什么呢。

#5


引用 4 楼 yibiao452249711 的回复:
引用 2 楼 forgetsam 的回复:
要删除数据的存储过程,操作不配事务,用查询方法执行,搞笑呢?

改成用delete方法调,前面开启事务,后面提交事务。

用delete方法,但是一直返回-1,也是执行失败,这是为什么呢。


存储过程只要执行了,就和ibatis没有关系了。

你封装了那么多out参数,不就是为了监视运行状况吗,把错误信息返回就知道为什么失败了。

#6


引用 5 楼 forgetsam 的回复:
引用 4 楼 yibiao452249711 的回复:
引用 2 楼 forgetsam 的回复:
要删除数据的存储过程,操作不配事务,用查询方法执行,搞笑呢?

改成用delete方法调,前面开启事务,后面提交事务。

用delete方法,但是一直返回-1,也是执行失败,这是为什么呢。

存储过程只要执行了,就和ibatis没有关系了。

你封装了那么多out参数,不就是为了……


现在是这么个情况,返回直接为空,执行存储过程失败,本来是有信息返回的,但是接收这个信息的实体类一直为空,这是为什么呢,也没有报任何错误。

#7


该回复于2013-06-01 09:15:17被管理员删除

#8


楼主求救,我也遇到同样问题,存储过程中有修改语句并且反回数据集合,可是仅返回了数据集合,存储过程中的修改语句不执行。