zoukankan      html  css  js  c++  java
  • JavaEE——Mybatis(20)--MyBatis实用场景 3.存储过程

    实际开发中,我们通常也会写一些存储过程,
    MyBatis也支持对存储过程的调用
    • 一个最简单的存储过程

    delimiter $$
    create procedure test()
    begin
        select 'hello';
    end $$
    delimiter ;
    

      

    oracle中创建存储过程

    • 存储过程的调用
    1、 select标签中statementType=“CALLABLE”
    2、标签体中调用语法:
    {call procedure_name(#{param1_info},#{param2_info})}

    <!-- public void getPageByProcedure(); 
    	1、使用select标签定义调用存储过程
    	2、statementType="CALLABLE":表示要调用存储过程
    	3、{call procedure_name(params)}
    	-->
    	<select id="getPageByProcedure" statementType="CALLABLE" databaseId="oracle">
    		{call hello_test(
    			#{start,mode=IN,jdbcType=INTEGER},
    			#{end,mode=IN,jdbcType=INTEGER},
    			#{count,mode=OUT,jdbcType=INTEGER},
    			#{emps,mode=OUT,jdbcType=CURSOR,javaType=ResultSet,resultMap=PageEmp}
    		)}
    	</select>
    	<resultMap type="com.atguigu.mybatis.bean.Employee" id="PageEmp">
    		<id column="EMPLOYEE_ID" property="id"/>
    		<result column="LAST_NAME" property="email"/>
    		<result column="EMAIL" property="email"/>
    	</resultMap>
    

      

    查询

    /**
    	 * oracle分页:
    	 * 		借助rownum:行号;子查询;
    	 * 存储过程包装分页逻辑
    	 * @throws IOException 
    	 */
    	@Test
    	public void testProcedure() throws IOException{
    		SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
    		SqlSession openSession = sqlSessionFactory.openSession();
    		try{
    			EmployeeMapper mapper = openSession.getMapper(EmployeeMapper.class);
    			OraclePage page = new OraclePage();
    			page.setStart(1);
    			page.setEnd(5);
    			mapper.getPageByProcedure(page);
    			
    			System.out.println("总记录数:"+page.getCount());
    			System.out.println("查出的数据:"+page.getEmps().size());
    			System.out.println("查出的数据:"+page.getEmps());
    		}finally{
    			openSession.close();
    		}
    		
    	}
    

      

  • 相关阅读:
    OpenGL纹理映射总结
    研究生常用网站:
    Oracle 11g,10g数据库软件下载地址
    <转>乔布斯羡慕嫉妒恨的人:Android之父安迪·鲁宾
    VC6里面的中文名字或者注释复制乱码解决
    基于CentOs的Hadoop集群全分布式部署<转>
    centos架设FTP服务器
    centos 卸载 jdk
    ESX的 企业版许可证
    vsftpd的 553 Could not create file
  • 原文地址:https://www.cnblogs.com/SkyeAngel/p/8492312.html
Copyright © 2011-2022 走看看