`

ibatis2.x调用oracle存储过程

阅读更多
一.JAVA对象
public class User implements Serializable {
 
    private static final long serialVersionUID = -6919964218508186044L;  
    private int id;  
    private String name;  
    private Date birthday;
   
    public int getId() {  
        return id;  
    }  
    public void setId(int id) {  
        this.id = id;  
    }  
    public String getName() {  
        return name;  
    }  
    public void setName(String name) {  
        this.name = name;  
    }  
    public Date getBirthday() {  
        return birthday;  
    }  
    public void setBirthday(Date birthday) {  
        this.birthday = birthday;  
    }  
} 
  
二.JAVA对象对应XML配置
<?xml version="1.0" encoding="UTF-8" ?> 
<!DOCTYPE sqlMap        
    PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"        
    "http://ibatis.apache.org/dtd/sql-map-2.dtd">
<sqlMap namespace="testProcedure"> 
    <parameterMap class="java.util.Map" id="procedureMap"> 
        <!-- 设置存储过程输出参数 --> 
        <parameter property="curr" jdbcType="ORACLECURSOR"  javaType="java.sql.ResultSet" mode="OUT" /> 
    </parameterMap> 
 
    <!-- resultClass设置游标返回数据类型 --> 
    <procedure id="getAllUser" resultClass="com.bijian.User" parameterMap="procedureMap"> 
        {call getAllUser(?)}  
    </procedure>
    <!-- 表结构  
        create table IBATIS_USER  
        (  
          ID       NUMBER not null,  
          NAME     VARCHAR2(20) not null,  
          birthday DATE not null  
        ) 
    --> 
      
    <!-- 存储过程  
    create or replace procedure getAllUser(curr_users out sys_refcursor)  
  as 
  begin   
    open curr_users for select * from ibatis_user;  
  end; 
    --> 
</sqlMap>
 
三.ibatis总配置
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMapConfig
 PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"
 "http://ibatis.apache.org/dtd/sql-map-config-2.dtd">
<sqlMapConfig>
 <properties resource="jdbc.properties"/>
 <settings
  cacheModelsEnabled="true"
  enhancementEnabled="true"
  lazyLoadingEnabled="true"
  maxRequests="32"
  maxSessions="10"
  maxTransactions="5"
  useStatementNamespaces="false"/>
 <transactionManager type="JDBC" commitRequired="false">
  <dataSource type="DBCP">
   <property name="JDBC.Driver" value="${jdbc.driverClassName}"/>
   <property name="JDBC.ConnectionURL" value="${jdbc.url}"/>
   <property name="JDBC.Username" value="${jdbc.username}"/>
   <property name="JDBC.Password" value="${jdbc.password}"/>
   <property name="Pool.MaximumActiveConnections" value="10"/>
   <property name="Pool.MaximumIdleConnections" value="5"/>
   <property name="Pool.MaximumCheckoutTime" value="120000"/>
   <property name="Pool.TimeToWait" value="500"/>
   <property name="Pool.PingQuery" value="${jdbc.testsql}"/>
   <property name="Pool.PingEnabled" value="false"/>
   <property name="Pool.PingConnectionsOlderThan" value="1"/>
   <property name="Pool.PingConnectionsNotUsedFor" value="1"/>
   <property name="validationQuery" value="${jdbc.testsql}"/>
  </dataSource>
 </transactionManager>
 <sqlMap resource="com/bijian/User.xml"/>
</sqlMapConfig>
  
 总配置对应的属性文件jdbc.properties
#jdbc属性配置信息
#ORACLE
jdbc.url=jdbc:oracle:thin:@192.168.1.100:1521:orcl
jdbc.driverClassName=oracle.jdbc.driver.OracleDriver
jdbc.username=haiya
jdbc.password=kingdee
jdbc.testsql=select 1 from dual
  
四.调用主类
public class Test {
 private static SqlMapClient sqlMapper;
 
 static {
  Reader reader = null;
  try {
   reader = Resources.getResourceAsReader("SqlMapConfig.xml");
   sqlMapper = SqlMapClientBuilder.buildSqlMapClient(reader);
  } catch (Exception e) {
   e.printStackTrace();
  } finally {
   if(reader != null) {
    try {
     reader.close();
    } catch (IOException e) {
     e.printStackTrace();
    } finally {
     reader = null;
    }
   }
  }
 }
 
 public static void main(String[] args) {  
     try {
      User user = null;
      List<User> userList = sqlMapper.queryForList("getAllUser");
      for(int i=0;i<userList.size();i++) {
       user = userList.get(i);
       System.out.println("id:" + user.getId());
       System.out.println("name:" + user.getName());
       System.out.println("birthday:" + user.getBirthday());
       System.out.println("");
      }
     } catch (SQLException e) {
   e.printStackTrace();
  }
 }
}
 
分享到:
评论

相关推荐

    ibatis调用oracle存储过程分页

    ibatis调用oracle存储过程分页

    ibatis调用oracle存储过程

    ibatis调用oracle存储过程

    Ibatis调用Oracle存储过程返回自定义类型

    Ibatis调用Oracle存储过程,返回自定义的类型。

    ibatis调用oracle的函数,存储过程的方法

    ibatis调用oracle的函数,存储过程的方法,从网上收集的,还没有整理。

    ibatis调用oracle的函数,存储过程的方法 IN 和OUT /游标

    NULL 博文链接:https://fengtiejun.iteye.com/blog/1603851

    asp.net实现oracle存储过程增删改查示例

    asp.net实现oracle存储过程增删改查示例 ...(2)oracle存储过程实现增删改查 (3)oracle sql语句实现增删改查 (4)asp.net代码调用 (5)ibatis框实现增删改查 我在公司学习了一个星期的作品,值得大家学习分享

    Java 面试宝典

    29、super.getClass()方法调用 .......................................................................... 22 30、String 是最基本的数据类型吗? ..............................................................

    Spring中文帮助文档

    使用SimpleJdbcCall调用存储过程 11.5.6. 声明SimpleJdbcCall使用的参数 11.5.7. 如何定义SqlParameters 11.5.8. 使用SimpleJdbcCall调用内置函数 11.5.9. 使用SimpleJdbcCall返回的ResultSet/REF Cursor 11.6...

    Spring API

    使用SimpleJdbcCall调用存储过程 11.5.6. 声明SimpleJdbcCall使用的参数 11.5.7. 如何定义SqlParameters 11.5.8. 使用SimpleJdbcCall调用内置函数 11.5.9. 使用SimpleJdbcCall返回的ResultSet/REF Cursor 11.6...

    2021年最新java面试题--视频讲解(内部培训84个知识点超详细).rar

    Java面试题31.jdbc调用存储过程 Java面试题32.简单说一下你对jdbc的理解 Java面试题33.写一个jdbc的访问oracle的列子 Java面试题34.jdbc中preparedStatement比Statement的好处 Java面试题35.数据库连接池的作用 Java...

    springmybatis

    MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis使用简单的XML或注解用于配置和原始映射,将接口和Java的POJOs(Plan ...

    最新Java面试题视频网盘,Java面试题84集、java面试专属及面试必问课程

    │ Java面试题31.jdbc调用存储过程.mp4 │ Java面试题32.简单说一下你对jdbc的理解.mp4 │ Java面试题33.写一个jdbc的访问oracle的列子.mp4 │ Java面试题34.jdbc中preparedStatement比Statement的好处.mp4 │ Java...

    最新Java面试宝典pdf版

    22、用JDBC如何调用存储过程 109 23、JDBC中的PreparedStatement相比Statement的好处 110 24. 写一个用jdbc连接并访问oracle数据的程序代码 111 25、Class.forName的作用?为什么要用? 111 26、大数据量下的分页解决...

    Java面试笔试资料大全

    22、用JDBC如何调用存储过程 109 23、JDBC中的PreparedStatement相比Statement的好处 110 24. 写一个用jdbc连接并访问oracle数据的程序代码 111 25、Class.forName的作用?为什么要用? 111 26、大数据量下的分页解决...

    JAVA面试宝典2010

    22、用JDBC如何调用存储过程 109 23、JDBC中的PreparedStatement相比Statement的好处 110 24. 写一个用jdbc连接并访问oracle数据的程序代码 111 25、Class.forName的作用?为什么要用? 111 26、大数据量下的分页解决...

Global site tag (gtag.js) - Google Analytics