0 0

mybatis调用mysql存储过程,inout参数为空无法解决20

<parameterMap type="java.util.Map" id="InsertBillMap">
		<parameter property="P_StoreID" jdbcType="BIGINT" javaType="Long" mode="IN" />
		<parameter property="P_FormTypeID" jdbcType="BIGINT" javaType="Long" mode="IN" />
		<parameter property="P_RelatedFID" jdbcType="BIGINT" javaType="Long" mode="IN" />
		<parameter property="P_RequestFID" jdbcType="BIGINT" javaType="Long" mode="IN" />
		<parameter property="P_ContractNumber" jdbcType="VARCHAR" javaType="String" mode="IN" />
		<parameter property="P_ClientID" jdbcType="BIGINT" javaType="Long" mode="IN" />
		<parameter property="P_WarehouseID" jdbcType="BIGINT" javaType="Long" mode="IN" />
		<parameter property="P_WarehouseID2" jdbcType="BIGINT" javaType="Long" mode="IN" />
		<parameter property="P_CreatorID" jdbcType="BIGINT" javaType="Long" mode="IN" />
		<parameter property="P_SalesID" jdbcType="BIGINT" javaType="Long" mode="IN" />
		<parameter property="P_NoTaxSum" jdbcType="DOUBLE" javaType="double" mode="IN" />
		<parameter property="P_TaxSum" jdbcType="DOUBLE" javaType="double" mode="IN" />
		<parameter property="P_NoTaxPaidSum" jdbcType="DOUBLE" javaType="double" mode="IN" />
		<parameter property="P_TaxPaidSum" jdbcType="DOUBLE" javaType="double" mode="IN" />
		<parameter property="P_PayMethod" jdbcType="BIGINT" javaType="Long" mode="IN" />
		<parameter property="P_PayValue" jdbcType="BIGINT" javaType="Long" mode="IN" />
		<parameter property="P_FirstPayDate" jdbcType="DATE" javaType="String" mode="IN" />
		<parameter property="P_Status" jdbcType="INTEGER" javaType="Integer" mode="IN" />
		<parameter property="P_Status2" jdbcType="INTEGER" javaType="Integer" mode="IN" />
		<parameter property="P_Notes" jdbcType="VARCHAR" javaType="String" mode="IN" />
		<parameter property="P_Notes2" jdbcType="VARCHAR" javaType="String" mode="IN" />
		<parameter property="P_Notes3" jdbcType="VARCHAR" javaType="String" mode="IN" />
		<parameter property="P_ReviewerID" jdbcType="BIGINT" javaType="Long" mode="IN" />
		<parameter property="P_SystemDate" jdbcType="DATE" javaType="String" mode="IN" />
		<parameter property="P_Invoice" jdbcType="INTEGER" javaType="Integer" mode="IN" />
		<parameter property="P_Used" jdbcType="INTEGER" javaType="Integer" mode="IN" />
		<parameter property="P_FPayDate" jdbcType="DATE" javaType="String" mode="IN" />
		<parameter property="P_bReverse" jdbcType="INTEGER" javaType="Integer" mode="IN" />
		<parameter property="P_VipID" jdbcType="BIGINT" javaType="Long" mode="IN" />
		<parameter property="P_FID" jdbcType="BIGINT" javaType="Long" mode="INOUT" />
		<parameter property="P_FormNumber" jdbcType="BIGINT" javaType="Long" mode="INOUT" />
		<parameter property="P_ret" jdbcType="VARCHAR" javaType="String" mode="OUT" />
	</parameterMap>

	<select id="callzc_proc_sp_InsertBill" parameterMap="InsertBillMap" statementType="CALLABLE">

	    <![CDATA[
         {call zc_proc_sp_InsertBill(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)}
    	]]>
	</select>

	BEGIN...	
              IF ISNULL(P_FormNumber) THEN...
        SELECT @@aa into P_FormNumber;
              ELSE.....



这里一运行代码,问题来了,因为clientID是inout的类型的,in进去是有值的,完全没问题,可以运行,当是空值进去的时候,就报错了!
出现一下报错
### Error querying database.  Cause: java.sql.SQLException: Incorrect integer value: 'null' for column 'P_FormNumber' at row 1
### The error may involve zc.saas.store.fee.dao.ZCFeeSaleBillMapper.ReverseBillMapWithoutNumber
### The error occurred while setting parameters
### Cause: java.sql.SQLException: Incorrect integer value: 'null' for column 'P_FormNumber' at row 1



经过几天讨论,感觉是mybatis装配的时候,把null当成“null”,求大神解决啊





问题补充:P_FormNumber是inout的类型的,in进去是有值的,完全没问题,可以运行,当是空值进去的时候,就报错了!
2013年12月06日 17:20
  • 大小: 319.1 KB

1个答案 按时间排序 按投票排序

0 0

只能看业务逻辑,integer能否默认一个值

2013年12月06日 21:00

相关推荐

    mybatis调用mysql存储过程

    本篇将详细阐述如何使用MyBatis调用MySQL中的存储过程,帮助你深入理解这一核心技能。 首先,我们需要了解存储过程的基本概念。存储过程是预编译的SQL语句集合,它封装了多个操作,可以在数据库服务器上执行,提高...

    Mybatis调用MySQL存储过程的简单实现

    本文将详细介绍如何使用MyBatis调用MySQL存储过程,以及存储过程的相关概念、优缺点和基本语法。 首先,存储过程是数据库中预编译的一组SQL语句,它可以包含控制流语句,以实现更复杂的业务逻辑。存储过程的创建和...

    Java调用存储过程--传入集合参数

    ### Java调用存储过程——传入集合参数:深入解析与实践 #### 核心知识点概览 在Java应用中,调用数据库存储过程时,往往需要处理复杂的参数传递,特别是当参数为集合类型时,这一过程变得更加具有挑战性。本文将...

    3、mybatis存储过程和函数的调用1

    本篇主要介绍如何在MyBatis中调用MySQL的存储过程,包括如何接收返回参数、单个结果集以及多个结果集。 首先,我们创建了一个名为`demo`的表,用于存储测试数据。然后定义了一个存储过程`pro`,它接受一个输入参数`...

    Mybatis源码分析之存储过程调用和运行流程

    这个存储过程接收一个输入参数 `age`,并输出一个名为 `user_count` 的计数结果,表示满足特定年龄条件的用户数量。 在 Mybatis 中调用存储过程主要涉及以下步骤: 1. **配置映射文件**:在 `userMapper.xml` 文件...

    springmybatis

    MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis使用简单的XML或注解用于配置和原始映射,将接口和Java的POJOs(Plan ...

    mybatis笔记.md

    ### MyBatis 概述 #### 1.1 什么是 MyBatis? ...MyBatis 的强大之处在于它不仅提供了高效的数据库访问能力,还极大地简化了开发过程中的复杂度,使得开发人员能够更专注于业务逻辑的设计与实现。

    ibatis 增删改查 存储过程及分页模拟

    在Java代码中,你可以创建一个Map对象,将参数放入其中,然后调用Mapper的方法来执行存储过程。 分页查询通常需要配合数据库的分页功能。在MySQL中,可以使用`LIMIT`和`OFFSET`关键字来实现。在Ibatis中,可以通过...

    Java–Mybatis搭建(XML方式)

    在本文中,我们将探讨如何使用Java和MyBatis框架搭建一个简单的应用,主要采用XML配置方式。MyBatis是一个轻量级的持久层框架,它将SQL与Java代码分离,提高了开发效率。以下是一个逐步搭建的过程: 1. **创建Maven...

    windows系统下使用java语言,在mysql数据库中做定时数据备份、删除(csdn)————程序.pdf

    `backupDatabase`方法负责执行实际的数据库备份操作,它会根据当前时间生成备份文件名,并调用`Runtime.getRuntime().exec()`来执行mysqldump命令,将MySQL数据库的数据导出为SQL文件。 需要注意的是,这个示例假设...

    JDBC与Java数据库程序设计_0

    6. **CallableStatement**:用于调用存储过程,它可以处理带有IN、OUT或IN/OUT参数的存储过程。 在使用JDBC进行数据库编程时,通常遵循以下步骤: 1. 加载数据库驱动:使用Class.forName()方法加载对应的JDBC驱动...

    JDBC重要点(选出比较重要的连接数据库知识)

    - **CallableStatement**:用于执行存储过程,支持IN、OUT、IN/OUT参数。 - **批处理**:通过`addBatch()`和`executeBatch()`方法,可以批量执行多条SQL语句,提高效率。 - **事务管理**:Connection对象提供了...

    Idea的Javaweb开发.docx

    #### 一、使用Java语言调用数据库 在JavaWeb开发过程中,数据库操作是一项非常重要的任务。以下是如何使用Java语言连接MySQL数据库并进行基本的CRUD(创建(Create)、读取(Retrieve)、更新(Update)、删除(Delete))...

    程序员需要知道

    ### 知识点详解 ...**解答**: 在 Tomcat 5 中,如果需要处理 URL 中包含的中文参数,可以通过设置 Tomcat 的连接器 (Connector) 来解决编码问题。例如,可以在 `server.xml` 文件中添加如下配置: ```xml ...

Global site tag (gtag.js) - Google Analytics