下面是存储过程需要的参数,存储过程在mysql里测试执行是可以得到想要的结果的
IN i_tableName VARCHAR(1024),
IN i_searchFields VARCHAR(1024),
IN i_pageIndex VARCHAR(10),
IN i_pageSize VARCHAR(10),
IN i_whereCondition VARCHAR(1024),
IN i_orderString VARCHAR(200),
OUT o_totalRows INT,
OUT o_totalPages INT
....这个是测试sql代码CALL commonPage('core_user', '*', '1', '1', 'where 1=1', '', @rowsCount, @pagesCount); 在使用mybatis执行这个存储过程,我先贴一下我的代码<parameterMap id="pageParameter" type="Map">
<parameter property="i_tableName" jdbcType="VARCHAR" javaType="java.lang.String" mode="IN"/>
<parameter property="i_searchFields" jdbcType="VARCHAR" javaType="java.lang.String" mode="IN"/>
<parameter property="i_pageIndex" jdbcType="VARCHAR" javaType="java.lang.String" mode="IN"/>
<parameter property="i_pageSize" jdbcType="VARCHAR" javaType="java.lang.String" mode="IN"/>
<parameter property="i_whereCondition" jdbcType="VARCHAR" javaType="java.lang.String" mode="IN"/>
<parameter property="i_orderString" jdbcType="VARCHAR" javaType="java.lang.String" mode="IN"/>
<parameter property="o_totalRows" jdbcType="VARCHAR" javaType="java.lang.String" mode="OUT"/>
<parameter property="o_totalPages" jdbcType="VARCHAR" javaType="java.lang.String" mode="OUT"/>
</parameterMap> <select id="getUserPageList" parameterMap= "pageView.pageParameter" resultType="User">
<![CDATA[
{ CALL commonPage(?, ?, ?, ?, ?, ?, ?, ?)}
]]>
</select> 使用时传的参数 Map<String, String> mp= new Map<String, String>();
mp.put("i_tableName", i_tableName);
mp.put("i_searchFields", i_searchFields);
mp.put("i_pageIndex", i_pageIndex);
mp.put("i_pageSize", i_pageSize);
mp.put("i_whereCondition", i_whereCondition);
mp.put("i_orderString", i_orderString);
mp.put("o_totalRows", "0");
mp.put("o_totalPages", "0");
....
public List<User> getUserPageList(PageParameter map)
{
return getSqlSessionTemplate().selectList("com.permissions.entity.User.getUserPageList", map.getMp());
}运行时出现异常:java.sql.SQLException: No value specified for parameter 7
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:910)
at com.mysql.jdbc.PreparedStatement.fillSendPacket(PreparedStatement.java:1737)
at com.mysql.jdbc.PreparedStatement.fillSendPacket(PreparedStatement.java:1685)
at com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:806)
at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.execute(NewProxyPreparedStatement.java:989)
......
很明显的就是输出参数的问题,我也是才接触mybatis的,忘高手解答....
IN i_tableName VARCHAR(1024),
IN i_searchFields VARCHAR(1024),
IN i_pageIndex VARCHAR(10),
IN i_pageSize VARCHAR(10),
IN i_whereCondition VARCHAR(1024),
IN i_orderString VARCHAR(200),
OUT o_totalRows INT,
OUT o_totalPages INT
....这个是测试sql代码CALL commonPage('core_user', '*', '1', '1', 'where 1=1', '', @rowsCount, @pagesCount); 在使用mybatis执行这个存储过程,我先贴一下我的代码<parameterMap id="pageParameter" type="Map">
<parameter property="i_tableName" jdbcType="VARCHAR" javaType="java.lang.String" mode="IN"/>
<parameter property="i_searchFields" jdbcType="VARCHAR" javaType="java.lang.String" mode="IN"/>
<parameter property="i_pageIndex" jdbcType="VARCHAR" javaType="java.lang.String" mode="IN"/>
<parameter property="i_pageSize" jdbcType="VARCHAR" javaType="java.lang.String" mode="IN"/>
<parameter property="i_whereCondition" jdbcType="VARCHAR" javaType="java.lang.String" mode="IN"/>
<parameter property="i_orderString" jdbcType="VARCHAR" javaType="java.lang.String" mode="IN"/>
<parameter property="o_totalRows" jdbcType="VARCHAR" javaType="java.lang.String" mode="OUT"/>
<parameter property="o_totalPages" jdbcType="VARCHAR" javaType="java.lang.String" mode="OUT"/>
</parameterMap> <select id="getUserPageList" parameterMap= "pageView.pageParameter" resultType="User">
<![CDATA[
{ CALL commonPage(?, ?, ?, ?, ?, ?, ?, ?)}
]]>
</select> 使用时传的参数 Map<String, String> mp= new Map<String, String>();
mp.put("i_tableName", i_tableName);
mp.put("i_searchFields", i_searchFields);
mp.put("i_pageIndex", i_pageIndex);
mp.put("i_pageSize", i_pageSize);
mp.put("i_whereCondition", i_whereCondition);
mp.put("i_orderString", i_orderString);
mp.put("o_totalRows", "0");
mp.put("o_totalPages", "0");
....
public List<User> getUserPageList(PageParameter map)
{
return getSqlSessionTemplate().selectList("com.permissions.entity.User.getUserPageList", map.getMp());
}运行时出现异常:java.sql.SQLException: No value specified for parameter 7
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:910)
at com.mysql.jdbc.PreparedStatement.fillSendPacket(PreparedStatement.java:1737)
at com.mysql.jdbc.PreparedStatement.fillSendPacket(PreparedStatement.java:1685)
at com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:806)
at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.execute(NewProxyPreparedStatement.java:989)
......
很明显的就是输出参数的问题,我也是才接触mybatis的,忘高手解答....
解决方案 »
- Unknown column 'a.item_no' in 'field list'
- hibernate异常
- 请问:hibernate如何防止映射文件中一个映射错误导致全盘错误?
- J2EE的特点是什么?要详细的回答~谢谢!
- 关于服务器的问题
- TOMCAT5.0中,我在自己建的虚拟目录下能成功运行JSP程序,但为什么运行servlet程序时却报错呢?
- Rowset 得到数据集,是否有方法得到数据集中的所有列名?
- eclipse编辑jsp文件时为什么字体的颜色没有高亮显示。
- 100分求助,jtable,tablemodel,database问题
- javaee开发常用的技术知识有哪些啊 比如JAVAEE项目中的上传 下载 还有其它哪些常用技术点啊
- oracle查询出的数据顺序问题
- No Hibernate Session bound to thread, and configuration does not allow creat
<parameter property="o_totalPages" jdbcType="VARCHAR" javaType="java.lang.String" mode="OUT"/>
难不成是因为这两返回的是INT,不是VARCHAR?
里,你是怎么写的?还有你的XML里就是这么写的吗?
{ CALL commonPage(?, ?, ?, ?, ?, ?, ?, ?)}