zoukankan      html  css  js  c++  java
  • mybatis调用存储过程实现

    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);
            }
        }
  • 相关阅读:
    Linux内核将要支持最新龙芯3A2000/3B2000
    微软拥抱Linux,着实太晚了
    武校学生
    第一篇 SCI 综述被接收的感想
    如何使用Rally+Docker测试OpenStack
    (OK) ntp——linux设置系统时间—RHEL—FEDORA—CENTOS
    理解 Linux 网络栈(2):非虚拟化Linux 环境中的 Segmentation Offloading 技术
    (OK) find-alter-files.sh——递归
    (OK) digui-gb18030-utf8.sh——递归
    (OK) digui-dir-del-M.sh——递归
  • 原文地址:https://www.cnblogs.com/youlangta/p/6789096.html
Copyright © 2011-2022 走看看