Mybatis调用存储过程报错,求大神解答 50
CREATEDEFINER=`suncz`@`%`PROCEDURE`spreader_detail_info`(OUTsp_totalINTEGER)BEGINCREA...
CREATE DEFINER=`suncz`@`%` PROCEDURE `spreader_detail_info`(OUT sp_total INTEGER)
BEGIN
CREATE TEMPORARY TABLE IF NOT EXISTS sp_output_tmp ENGINE = MEMORY
(SELECT
a.id 'spId',
a. NAME 'spName',
a.user_id 'spHdxId',
a.parent_id 'spParentId',
a.parentName 'spParentName',
a.personTotal 'spPersonTotal',
a.consumptionTotal 'spConsumptionTotal',
a.backTotal 'spBackTotal'
FROM
hdx_proxy_distributor a
WHERE
a.position = 6
GROUP BY
a.id
);
SELECT * from sp_output_tmp;
select count(spId) 's_total' into @total from sp_output_tmp;
set sp_total = @total;
drop table sp_output_tmp;
END
这是我在mysql中写的存储过程,返回一个对象集合与总记录数。
<resultMap type="java.lang.Integer" id="count">
<result column="s_total" jdbcType="INTEGER" javaType="Integer"/>
</resultMap>
<resultMap type="java.util.Map" id="spreaderMap">
...
</resultMap>
<select id="selectSpreader" parameterType="java.util.List" resultMap="spreaderMap,count" statementType="CALLABLE">
{call spreader_detail_info(#{sp_total,jdbcType=INTEGER,mode=OUT})}
</select>
在Mybatis配置里面是这么写的。参照了网上的写法。
DAO层这么调用:
public List<List<?>> selectSpreader(Map<String,Integer> map);
报错:错误信息说设置参数时发生异常:
### Error querying database. Cause: java.lang.NullPointerException
### The error may involve org.dis.main.fxsht.suppliers.IHdxSuppliersDao.selectSpreader-Inline
### The error occurred while setting parameters
### Cause: java.lang.NullPointerException 展开
BEGIN
CREATE TEMPORARY TABLE IF NOT EXISTS sp_output_tmp ENGINE = MEMORY
(SELECT
a.id 'spId',
a. NAME 'spName',
a.user_id 'spHdxId',
a.parent_id 'spParentId',
a.parentName 'spParentName',
a.personTotal 'spPersonTotal',
a.consumptionTotal 'spConsumptionTotal',
a.backTotal 'spBackTotal'
FROM
hdx_proxy_distributor a
WHERE
a.position = 6
GROUP BY
a.id
);
SELECT * from sp_output_tmp;
select count(spId) 's_total' into @total from sp_output_tmp;
set sp_total = @total;
drop table sp_output_tmp;
END
这是我在mysql中写的存储过程,返回一个对象集合与总记录数。
<resultMap type="java.lang.Integer" id="count">
<result column="s_total" jdbcType="INTEGER" javaType="Integer"/>
</resultMap>
<resultMap type="java.util.Map" id="spreaderMap">
...
</resultMap>
<select id="selectSpreader" parameterType="java.util.List" resultMap="spreaderMap,count" statementType="CALLABLE">
{call spreader_detail_info(#{sp_total,jdbcType=INTEGER,mode=OUT})}
</select>
在Mybatis配置里面是这么写的。参照了网上的写法。
DAO层这么调用:
public List<List<?>> selectSpreader(Map<String,Integer> map);
报错:错误信息说设置参数时发生异常:
### Error querying database. Cause: java.lang.NullPointerException
### The error may involve org.dis.main.fxsht.suppliers.IHdxSuppliersDao.selectSpreader-Inline
### The error occurred while setting parameters
### Cause: java.lang.NullPointerException 展开
1个回答
展开全部
异常是从org.dis.main.fxsht.suppliers.IHdxSuppliersDao类的selectSpreader方法中抛出来的,由于没有看到这个类的内容,只能猜测可能的原因:数据库的连接或JdbcTemplate对象为空。
追问
我写了DAO层的引用啊,我DAO层是:
public List> selectSpreader(Map map);
并且存储过程是用Mybatis调用的
追答
明白你的意思了,请把selectSpreader方法的内容贴一下,方便分析。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询