ibatis与存储过程(带输出参数的存储过程)
全部是针对Microsoft SQL Server 2000的Stored Procedure的例子:
参照《iBATIS in Action》书写: 1. max_in_example Stored Procedure:
CREATE PROCEDURE [dbo].[max_in_example] @a INTEGER = 0 OUTPUT, @b INTEGER = 0 OUTPUT, @c INTEGER = 0 OUTPUT AS BEGIN IF (@a > @b) SET @c = @a ELSE
SET @c = @b RETURN @c END GO SqlMap:
mode=\"OUT\" /> property=\"a\"
javaType=\"int\"
property=\"c\"
javaType=\"int\"
property=\"b\" javaType=\"int\"id=\"in_example\"
parameterMap=\"pm_in_example\"
resultClass=\"int\">
{ ? = call max_in_example(?, ?) }
Java Code:
publicstatic Integer getMax_in_example(int a, int b) throws SQLException {
Map(2);m.put(\"a\m.put(\"b\m.put(\"c\//执行存储过程in_example
sqlMapper.queryForObject(\"in_example\
return m.get(\"c\"); }
2. swap
Stored Procedure:
CREATE PROCEDURE [dbo].[swap]
Integer>
m
=
new
HashMap@a INTEGER OUTPUT, @b INTEGER OUTPUT AS BEGINDECLARE @temp INTEGER
SET @temp = @a SET @a = @b SET @b = @temp END GO SqlMap: mode=\"INOUT\" /> mode=\"INOUT\" />
parameterMap=\"swapProcedureMap\">{ call swap(?, ?) }
id=\"swapProcedure\"
property=\"b\"
javaType=\"int\"
property=\"a\"
javaType=\"int\"
id=\"swapProcedureMap\"
Java Code:
publicstatic Map swap(int a, int b) throws SQLException { Map(2);m.put(\"a\m.put(\"b\
//执行存储过程swap
sqlMapper.queryForObject(\"swapProcedure\
return m; }
3. maximum Stored Procedure:
CREATE PROCEDURE [dbo].[maximum] @a INT OUTPUT, @b INT OUTPUT, @c INT OUTPUT AS BEGIN IF(@a > @b) SET @c = @a
IF(@b >= @a) SET @c = @b
Integer>
m
=
new
HashMapEND GO SqlMap:
id=\"maxOutProcedure\"parameterMap=\"maxOutProcedureMap\">{ call maximum (?, ?, ?) }
Java Code:
publicstatic Integer maximum(int a, int b) throws SQLException {
Map(2);m.put(\"a\m.put(\"b\m.put(\"c\
//执行存储过程maximum
sqlMapper.queryForObject(\"maxOutProcedure\
Integer>
m
=
new
HashMapproperty=\"c\"jdbcType=\"INTEGER\"
id=\"maxOutProcedureMap\"
return m.get(\"c\"); }
以上的Java Code类方法都是写在相应的ProcedureDAOImpl类中,可以通过ProcedureDAOImpl类调用相应得方法和传入对应参数来与数据库存储过程交互。
注意:在SqlMap.xml文件中中参数的顺序跟中”?”的顺序一致。如:a, b, c; ? = procedurename(?, ?) 则,第一个问号表示a,依次类推。