mybatis怎么用sqlserver存储过程输出参数

2025-04-29 13:36:11
推荐回答(1个)
回答1:

首先定义一个MySQL存储过程:
DROP PROCEDURE IF EXISTS test ;
CREATE PROCEDURE test (IN p1 VARCHAR(26), OUT pResult VARCHAR(512))
BEGIN
SET pResult := NULL;
SET pResult :=CONCAT ( 'test',p1);
SELECT * FROM tb2 WHERE commet like Concat('%',p1, '%'); -- this 返回一个结果集
END;

tb2的表结构和数据如下:
DROP TABLE IF EXISTS `tb2`;
CREATE TABLE `tb2` (
`t_id` int(10) NOT NULL AUTO_INCREMENT COMMENT '主键',
`Name` varchar(255) DEFAULT NULL COMMENT '字段名',
`type` int(1) DEFAULT NULL COMMENT '类型,0-正常,1-异常,2-传输,3-退单',
`commet` varchar(255) DEFAULT NULL COMMENT '备注',
`optime` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '操作时间',
PRIMARY KEY (`t_id`)
) ;

继续增加新的类:
Stb2.Java内容:
package com.springdemo.usermgr.vo;

import java.util.Date;

/**
* tb2表实体类
* @author zhouxj
* @date 2014-09-10 下午03:29:32
*/
public class Stb2{

private Integer t_id;
private String name;
private Integer type;
private String commet;
private java.util.Date optime;

public Integer getT_id() {
return t_id;
}
public void setT_id(Integer t_id) {
this.t_id = t_id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getType() {
return type;
}
public void setType(Integer type) {
this.type = type;
}
public String getCommet() {
return commet;
}
public void setCommet(String commet) {
this.commet = commet;
}
public java.util.Date getOptime() {
return optime;
}
public void setOptime(java.util.Date optime) {
this.optime = optime;
}

}

修改SUserMapper.java内容:
package com.springdemo.usermgr.vo;

import java.util.List;
import java.util.Map;

public interface SUserMapper {
public int insertSUser(SUser user);
public SUser getSUser(String name);
public List getTestProc(Map param);
}

Test2测试类内容:

package domain;

import java.io.IOException;
import java.io.Reader;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import com.springdemo.usermgr.vo.SUserMapper;
import com.springdemo.usermgr.vo.Stb2;

public class Test2 {
public static void main(String[] args) throws IOException {
String resource = "config.xml";
Reader reader = Resources.getResourceAsReader(resource);
SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(reader);
SqlSession session = ssf.openSession(true); //true 为自动提交事务

try {
Map parms = new HashMap();
parms.put("queryStr", "的");

SUserMapper spMapper = session.getMapper(SUserMapper.class);

List as=spMapper.getTestProc(parms);
String outPara=(String) parms.get("retStr");
System.out.println(outPara);
System.out.println(as.toString());
//org.apache.ibatis.type.JdbcType.VARCHAR
// org.apache.ibatis.mapping.ParameterMode.OUT
} catch (Exception e) {

e.printStackTrace();
} finally {
session.close();
}
}
}

config.xml配置文件修改内容:

"-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">






















增加配置文件Stb2.xml:

"-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">










运行Test2类,可能的结果:
test的
[com.springdemo.usermgr.vo.Stb2@6900bf61, com.springdemo.usermgr.vo.Stb2@3014af22]

返回了参数内容,和两条记录。