Caused by: com.ibatis.common.jdbc.exception.NestedSQLException:
--- The error occurred in config/sql/hbpp/hbpp04/Hbpp04021000Dao.xml.
--- The error occurred while applying a parameter map.
--- Check the Hbpp04021000Dao.procParaMap.
--- Check the statement (update procedure failed).
--- Cause: java.lang.NullPointerException
at com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeQueryWithCallback(GeneralStatement.java:188)
at com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeQueryForObject(GeneralStatement.java:104)
at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForObject(SqlMapExecutorDelegate.java:566)
at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForObject(SqlMapExecutorDelegate.java:541)
at com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.queryForObject(SqlMapSessionImpl.java:106)
at org.springframework.orm.ibatis.SqlMapClientTemplate$1.doInSqlMapClient(SqlMapClientTemplate.java:273)
at org.springframework.orm.ibatis.SqlMapClientTemplate.execute(SqlMapClientTemplate.java:209)
... 133 more
知道是空指针异常,但是不知道具体是哪的问题,是调用问题还是我存储过程写的有问题
<parameterMap id="procParaMap" class="HashMap">
<parameter property="strLxId" jdbcType="char" javaType="java.lang.String" mode="IN"/>
<parameter property="strLxType" jdbcType="char" javaType="java.lang.String" mode="IN"/>
<parameter property="strLxNo" jdbcType="nvarchar" javaType="java.lang.String" mode="IN"/>
<parameter property="strLxCode" jdbcType="nvarchar" javaType="java.lang.String" mode="IN"/>
<parameter property="strLxName" jdbcType="nvarchar" javaType="java.lang.String" mode="IN"/>
<parameter property="strLxJm" jdbcType="nvarchar" javaType="java.lang.String" mode="IN"/>
<parameter property="strLxSm" jdbcType="nvarchar" javaType="java.lang.String" mode="IN"/>
<parameter property="strShowName" jdbcType="nvarchar" javaType="java.lang.String" mode="IN"/>
<parameter property="numShowOrder" jdbcType="int" javaType="java.lang.String" mode="IN"/>
<parameter property="strValidFlg" jdbcType="char" javaType="java.lang.String" mode="IN"/>
<parameter property="strOperateStatus" jdbcType="char" javaType="java.lang.String" mode="IN"/>
<parameter property="strComments" jdbcType="nvarchar" javaType="java.lang.String" mode="IN"/>
<parameter property="strCreateId" jdbcType="char" javaType="java.lang.String" mode="IN"/>
<parameter property="strModifyId" jdbcType="char" javaType="java.lang.String" mode="IN"/>
<parameter property="strDelFlg" jdbcType="char" javaType="java.lang.String" mode="IN"/>
<parameter property="resultValue" jdbcType="char" javaType="java.lang.String" mode="OUT"/>
</parameterMap> <procedure id="call_hjp_bpp_lxxx_operate" parameterMap="procParaMap" resultClass="HitListDataVo">
{call hjp_bpp_lxxx_operate(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) }
</procedure>
存储过程 IF EXISTS(SELECT * FROM dbo.sysobjects WHERE xtype = 'p' AND [NAME]='hjp_bpp_lxxx_operate') BEGIN
DROP PROCEDURE [dbo].[hjp_bpp_lxxx_operate]
END
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- EXEC hjp_bpp_lxxx_operate '','','','',''
/**
* 路线信息操作
*
* @param strLxId char(40) --路线主键
* @param strLxType char(2) --路线类型
* @param strLxNo nvarchar(100) --路线编号
* @param strLxCode nvarchar(20) -- 路线代号
* @param strLxName nvarchar(100) --路线名称
* @param strLxJm nvarchar(20) --路线简码
* @param strLxSm nvarchar(100) --路线说明
* @param strShowName nvarchar(100) --显示名称
* @param numShowOrder int --显示顺序
* @param strValidFlg char(1) --有效标识
* @param strOperateStatus char(2) --操作状态
* @param strComments nvarchar(100) --备注
* @param strCreateId char(40) --创建用户主键
* @param datCreateTime datetime --创建时间
* @param strModifyId char(40) --修改用户主键
* @param datModifyTime datetime --修改时间
* @param strDelFlg char(1) --删除标识
*
* @resultValue 1:新建成功 2:修改成功 3:删除成功 -1:数据已被删除 -2:数据已被修改 -3:数据已被引用 -4:编号已存在 -99:异常
*
* @author lichang 2011-01-01
*/
CREATE PROCEDURE [dbo].[hjp_bpp_lxxx_operate](
@strLxId char(40),
@strLxType char(2),
@strLxNo nvarchar(100),
@strLxCode nvarchar(20),
@strLxName nvarchar(100),
@strLxJm nvarchar(20),
@strLxSm nvarchar(100),
@strShowName nvarchar(100),
@numShowOrder int,
@strValidFlg char(1),
@strOperateStatus char(2),
@strComments nvarchar(100),
@strCreateId char(40),
@datCreateTime datetime,
@strModifyId char(40),
@datModifyTime datetime,
@strDelFlg char(1),
@resultValue varchar(100) output
)
AS
BEGIN
--设置事务自动提交
SET IMPLICIT_TRANSACTIONS OFF
--开始捕获异常
BEGIN TRY
--开始事务
BEGIN TRANSACTION
--不返回计数
SET NOCOUNT ON --新建
declare @OPERATESTATUS_01 char(2)
set @OPERATESTATUS_01='01' --修改
declare @OPERATESTATUS_02 char(2)
set @OPERATESTATUS_02='02' --删除
declare @OPERATESTATUS_03 char(2)
set @OPERATESTATUS_03='03'--校验********************************************************************************************** --修改、删除
if (@strOperateStatus = @OPERATESTATUS_02 or @strOperateStatus = @OPERATESTATUS_03) begin --数据已被删除 返回-1
declare @dataCount int
set @dataCount = (select count(strLxId) from hjt_edb_lx_info where strLxId = @strLxId and strDelFlg = '0')
if @dataCount = 0 begin
set @resultValue = '-1'
return
end --数据已被修改 返回-2
declare @newTime datetime
set @datModifyTime = (select CONVERT(varchar, getdate(), 120 ))
set @newTime = (select datModifyTime from hjt_edb_lx_info where strLxId = @strLxId and strDelFlg = '0')
if @newTime != @datModifyTime begin
set @resultValue = '-2'
return
end --数据已被引用 返回-3
declare @usedCount int
set @usedCount = (select sum(queryCount) queryCount from (
select count(strLxId) queryCount from hjt_edb_gxlx_relation
where strLxId = @strLxId and strDelFlg = '0'
union
select count(strSxlxId) queryCount from hjt_edb_wlqd_info
where strSxlxId = @strLxId and strDelFlg = '0'
union
select count(strMxlxId) queryCount from hjt_edb_wlqd_info
where strMxlxId = @strLxId and strDelFlg = '0'
union
select count(strFwlxId) queryCount from hjt_edb_wlqd_info
where strFwlxId = @strLxId and strDelFlg = '0'
)A )
if @usedCount != 0 begin
set @resultValue = '-3'
return
end end --新建、修改
if (@strOperateStatus = @OPERATESTATUS_01 or @strOperateStatus = @OPERATESTATUS_02) begin --编号已存在 返回-4
declare @noCount int
set @noCount = (select count(strLxId) from hjt_edb_lx_info where strLxId != @strLxId and strLxNo = @strLxNo and strDelFlg = '0')
if @noCount != 0 begin
set @resultValue = '-4'
return
end
end--执行********************************************************************************************** --新建
if (@strOperateStatus = @OPERATESTATUS_01) begin
set @resultValue = '1'
set @strLxId = (select 'HIT'+left(replace(newid(),'-',''),32))
insert into hjt_edb_lx_info
values(@strLxId,@strLxType,@strLxNo,@strLxCode,@strLxName,@strLxJm,@strLxSm,@strShowName,@numShowOrder,'1','00',@strComments,@strCreateId,getDate(),@strModifyId,getDate(),'0')
end
--修改
if (@strOperateStatus = @OPERATESTATUS_02) begin
set @resultValue = '2'
update hjt_edb_lx_info
set strLxType = @strLxType,strLxNo = @strLxNo,strLxCode = @strLxCode,strLxName = @strLxName,strLxJm = @strLxJm,strLxSm = @strLxSm,strShowName = @strShowName,strModifyId = @strModifyId,datModifyTime = getDate(),strComments = @strComments
where strLxId = @strLxId
end --删除
if (@strOperateStatus = @OPERATESTATUS_03) begin
set @resultValue = '3'
delete from hjt_edb_lx_info where strLxId = @strLxId
end
--返回计数
SET NOCOUNT OFF
--提交事务
COMMIT
--结束捕获异常
END TRY
--抛出异常
BEGIN CATCH PRINT @@ERROR --异常返回值-99
SET @resultValue = '-99' IF @@Trancount>0 BEGIN
ROLLBACK TRANSACTION
ENDEND CATCH
END
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO执行删除操作的时候报错~
--- The error occurred in config/sql/hbpp/hbpp04/Hbpp04021000Dao.xml.
--- The error occurred while applying a parameter map.
--- Check the Hbpp04021000Dao.procParaMap.
--- Check the statement (update procedure failed).
--- Cause: java.lang.NullPointerException
at com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeQueryWithCallback(GeneralStatement.java:188)
at com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeQueryForObject(GeneralStatement.java:104)
at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForObject(SqlMapExecutorDelegate.java:566)
at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForObject(SqlMapExecutorDelegate.java:541)
at com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.queryForObject(SqlMapSessionImpl.java:106)
at org.springframework.orm.ibatis.SqlMapClientTemplate$1.doInSqlMapClient(SqlMapClientTemplate.java:273)
at org.springframework.orm.ibatis.SqlMapClientTemplate.execute(SqlMapClientTemplate.java:209)
... 133 more
知道是空指针异常,但是不知道具体是哪的问题,是调用问题还是我存储过程写的有问题
<parameterMap id="procParaMap" class="HashMap">
<parameter property="strLxId" jdbcType="char" javaType="java.lang.String" mode="IN"/>
<parameter property="strLxType" jdbcType="char" javaType="java.lang.String" mode="IN"/>
<parameter property="strLxNo" jdbcType="nvarchar" javaType="java.lang.String" mode="IN"/>
<parameter property="strLxCode" jdbcType="nvarchar" javaType="java.lang.String" mode="IN"/>
<parameter property="strLxName" jdbcType="nvarchar" javaType="java.lang.String" mode="IN"/>
<parameter property="strLxJm" jdbcType="nvarchar" javaType="java.lang.String" mode="IN"/>
<parameter property="strLxSm" jdbcType="nvarchar" javaType="java.lang.String" mode="IN"/>
<parameter property="strShowName" jdbcType="nvarchar" javaType="java.lang.String" mode="IN"/>
<parameter property="numShowOrder" jdbcType="int" javaType="java.lang.String" mode="IN"/>
<parameter property="strValidFlg" jdbcType="char" javaType="java.lang.String" mode="IN"/>
<parameter property="strOperateStatus" jdbcType="char" javaType="java.lang.String" mode="IN"/>
<parameter property="strComments" jdbcType="nvarchar" javaType="java.lang.String" mode="IN"/>
<parameter property="strCreateId" jdbcType="char" javaType="java.lang.String" mode="IN"/>
<parameter property="strModifyId" jdbcType="char" javaType="java.lang.String" mode="IN"/>
<parameter property="strDelFlg" jdbcType="char" javaType="java.lang.String" mode="IN"/>
<parameter property="resultValue" jdbcType="char" javaType="java.lang.String" mode="OUT"/>
</parameterMap> <procedure id="call_hjp_bpp_lxxx_operate" parameterMap="procParaMap" resultClass="HitListDataVo">
{call hjp_bpp_lxxx_operate(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) }
</procedure>
存储过程 IF EXISTS(SELECT * FROM dbo.sysobjects WHERE xtype = 'p' AND [NAME]='hjp_bpp_lxxx_operate') BEGIN
DROP PROCEDURE [dbo].[hjp_bpp_lxxx_operate]
END
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- EXEC hjp_bpp_lxxx_operate '','','','',''
/**
* 路线信息操作
*
* @param strLxId char(40) --路线主键
* @param strLxType char(2) --路线类型
* @param strLxNo nvarchar(100) --路线编号
* @param strLxCode nvarchar(20) -- 路线代号
* @param strLxName nvarchar(100) --路线名称
* @param strLxJm nvarchar(20) --路线简码
* @param strLxSm nvarchar(100) --路线说明
* @param strShowName nvarchar(100) --显示名称
* @param numShowOrder int --显示顺序
* @param strValidFlg char(1) --有效标识
* @param strOperateStatus char(2) --操作状态
* @param strComments nvarchar(100) --备注
* @param strCreateId char(40) --创建用户主键
* @param datCreateTime datetime --创建时间
* @param strModifyId char(40) --修改用户主键
* @param datModifyTime datetime --修改时间
* @param strDelFlg char(1) --删除标识
*
* @resultValue 1:新建成功 2:修改成功 3:删除成功 -1:数据已被删除 -2:数据已被修改 -3:数据已被引用 -4:编号已存在 -99:异常
*
* @author lichang 2011-01-01
*/
CREATE PROCEDURE [dbo].[hjp_bpp_lxxx_operate](
@strLxId char(40),
@strLxType char(2),
@strLxNo nvarchar(100),
@strLxCode nvarchar(20),
@strLxName nvarchar(100),
@strLxJm nvarchar(20),
@strLxSm nvarchar(100),
@strShowName nvarchar(100),
@numShowOrder int,
@strValidFlg char(1),
@strOperateStatus char(2),
@strComments nvarchar(100),
@strCreateId char(40),
@datCreateTime datetime,
@strModifyId char(40),
@datModifyTime datetime,
@strDelFlg char(1),
@resultValue varchar(100) output
)
AS
BEGIN
--设置事务自动提交
SET IMPLICIT_TRANSACTIONS OFF
--开始捕获异常
BEGIN TRY
--开始事务
BEGIN TRANSACTION
--不返回计数
SET NOCOUNT ON --新建
declare @OPERATESTATUS_01 char(2)
set @OPERATESTATUS_01='01' --修改
declare @OPERATESTATUS_02 char(2)
set @OPERATESTATUS_02='02' --删除
declare @OPERATESTATUS_03 char(2)
set @OPERATESTATUS_03='03'--校验********************************************************************************************** --修改、删除
if (@strOperateStatus = @OPERATESTATUS_02 or @strOperateStatus = @OPERATESTATUS_03) begin --数据已被删除 返回-1
declare @dataCount int
set @dataCount = (select count(strLxId) from hjt_edb_lx_info where strLxId = @strLxId and strDelFlg = '0')
if @dataCount = 0 begin
set @resultValue = '-1'
return
end --数据已被修改 返回-2
declare @newTime datetime
set @datModifyTime = (select CONVERT(varchar, getdate(), 120 ))
set @newTime = (select datModifyTime from hjt_edb_lx_info where strLxId = @strLxId and strDelFlg = '0')
if @newTime != @datModifyTime begin
set @resultValue = '-2'
return
end --数据已被引用 返回-3
declare @usedCount int
set @usedCount = (select sum(queryCount) queryCount from (
select count(strLxId) queryCount from hjt_edb_gxlx_relation
where strLxId = @strLxId and strDelFlg = '0'
union
select count(strSxlxId) queryCount from hjt_edb_wlqd_info
where strSxlxId = @strLxId and strDelFlg = '0'
union
select count(strMxlxId) queryCount from hjt_edb_wlqd_info
where strMxlxId = @strLxId and strDelFlg = '0'
union
select count(strFwlxId) queryCount from hjt_edb_wlqd_info
where strFwlxId = @strLxId and strDelFlg = '0'
)A )
if @usedCount != 0 begin
set @resultValue = '-3'
return
end end --新建、修改
if (@strOperateStatus = @OPERATESTATUS_01 or @strOperateStatus = @OPERATESTATUS_02) begin --编号已存在 返回-4
declare @noCount int
set @noCount = (select count(strLxId) from hjt_edb_lx_info where strLxId != @strLxId and strLxNo = @strLxNo and strDelFlg = '0')
if @noCount != 0 begin
set @resultValue = '-4'
return
end
end--执行********************************************************************************************** --新建
if (@strOperateStatus = @OPERATESTATUS_01) begin
set @resultValue = '1'
set @strLxId = (select 'HIT'+left(replace(newid(),'-',''),32))
insert into hjt_edb_lx_info
values(@strLxId,@strLxType,@strLxNo,@strLxCode,@strLxName,@strLxJm,@strLxSm,@strShowName,@numShowOrder,'1','00',@strComments,@strCreateId,getDate(),@strModifyId,getDate(),'0')
end
--修改
if (@strOperateStatus = @OPERATESTATUS_02) begin
set @resultValue = '2'
update hjt_edb_lx_info
set strLxType = @strLxType,strLxNo = @strLxNo,strLxCode = @strLxCode,strLxName = @strLxName,strLxJm = @strLxJm,strLxSm = @strLxSm,strShowName = @strShowName,strModifyId = @strModifyId,datModifyTime = getDate(),strComments = @strComments
where strLxId = @strLxId
end --删除
if (@strOperateStatus = @OPERATESTATUS_03) begin
set @resultValue = '3'
delete from hjt_edb_lx_info where strLxId = @strLxId
end
--返回计数
SET NOCOUNT OFF
--提交事务
COMMIT
--结束捕获异常
END TRY
--抛出异常
BEGIN CATCH PRINT @@ERROR --异常返回值-99
SET @resultValue = '-99' IF @@Trancount>0 BEGIN
ROLLBACK TRANSACTION
ENDEND CATCH
END
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO执行删除操作的时候报错~
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货