mybatis调用存储过程

创建存储过程

create PROCEDURE pro1(in name1 VARCHAR(20),out num INTEGER)
BEGIN
insert into dept (dname) values (name1);
select count(*) into num from dept;
END

创建mapper

  <parameterMap id="pro1" type="java.util.Map">
        <parameter property="dname" mode="IN" jdbcType="VARCHAR"/>
        <parameter property="num" mode="OUT" jdbcType="INTEGER"/>
    </parameterMap>

    <insert id="testPro" parameterMap="pro1" statementType="CALLABLE">
        call pro1(?,?);
    </insert>
JDBC 要求,如果一个列允许 null 值,并且会传递值 null 的参数,就必须要指定 JDBC Type
映射文件还可以这样写:

运行测试:

public static void main(String[] args) throws IOException {
        SqlSessionFactory sql = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("mybatis-config.xml"));
        SqlSession sqlSession = sql.openSession();
        DempDAO mapper = sqlSession.getMapper(DempDAO.class);
        Map map=new HashMap<>();
        map.put("dname", "设计部");
        map.put("num", 0);
        mapper.testPro(map);
        sqlSession.commit();
        System.out.println(map.get("num").toString());
    }
原文地址:https://www.cnblogs.com/Zs-book1/p/11253936.html