1.创建存储过程
create or replace
procedure pro_student_info_byId(
in_Id in t_student_info.id%type,out_custInfo out sys_refcursor
)is
begin
open out_custInfo for select a.* from t_student_info a where a.id = in_Id;
end ;
public interface StudentMapper {
public void getStudents(Map<String,Object> param);
}
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.study.mybatis.mapper.StudentMapper">
<resultMap type="student" id="studentMap">
<id column="id" property="id" />
<result column="student_name" property="studentName" />
<result column="sex" property="sex"
typeHandler="org.apache.ibatis.type.EnumOrdinalTypeHandler" />
<result column="student_note" property="studentNote" />
<result column="student_num" property="studentNum" />
</resultMap>
<select id="getStudents" statementType="CALLABLE" parameterType="java.util.Map">
{call
pro_student_info_byId(
#{id,jdbcType=VARCHAR,mode=IN},
#{studentInfoList,jdbcType=CURSOR,mode=OUT,javaType=ResultSet,resultMap=studentMap})}
</select>
</mapper>
package com.study.mybatis.util;
import java.io.IOException;
import java.io.InputStream;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
/**
* mybatis工具类
*
* @author Administrator
*
*/
public class MybatisUtil {
private static SqlSessionFactory sqlSessionFactory;
// 类线程锁
private static final Class CLASS_LOCK = MybatisUtil.class;
public static SqlSessionFactory initSqlSessionFactory() {
String resource = "mybatis-config.xml";
InputStream inputStream = null;
try {
inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
Logger.getLogger(MybatisUtil.class.getName()).log(Level.SEVERE, null, e);
synchronized (CLASS_LOCK) {
if (sqlSessionFactory == null) {
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
}
return sqlSessionFactory;
}
}
return sqlSessionFactory;
}
public static SqlSession openSqlsession() {
if (sqlSessionFactory == null) {
initSqlSessionFactory();
}
return sqlSessionFactory.openSession();
}
public static void closeSqlSession(SqlSession session) {
if (session != null) {
session.close();
}
}
}
public static void main(String[] args) {
SqlSession session = null;
try {
session = MybatisUtil.openSqlsession();
StudentMapper studentMapper = session.getMapper(StudentMapper.class);
Map<String, Object> params = new HashMap<String, Object>();
params.put("id", 1);
params.put("studentInfoList", OracleTypes.CURSOR);
System.out.println(params);
studentMapper.getStudents(params);
System.out.println(params);
session.commit();
} catch (Exception e) {
System.out.println(e.getMessage());
session.rollback();
} finally {
MybatisUtil.closeSqlSession(session);
}
}