利用空余时间写的一个简单例子,数据库是oracle10g.
配置文件:
OracleSqlMapConfig.xml
<?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> <!-- Configure a built-in transaction manager. If you're using an app server, you probably want to use its transaction manager and a managed datasource --> <transactionManager type="JDBC" commitRequired="false"> <dataSource type="SIMPLE"> <property name="JDBC.Driver" value="oracle.jdbc.driver.OracleDriver" /> <property name="JDBC.ConnectionURL" value="jdbc:oracle:thin:@localhost:1521:ORCL" /> <property name="JDBC.Username" value="scott" /> <property name="JDBC.Password" value="tiger" /> <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.PingEnabled" value="false" /> <property name="Pool.PingConnectionsOlderThan" value="1" /> <property name="Pool.PingConnectionsNotUsedFor" value="1" /> </dataSource> </transactionManager> <sqlMap resource="com/Emp.xml" /> </sqlMapConfig>
Emp.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="Emp"> <!-- 取别名 --> <typeAlias alias="emp" type="com.Emp" /> <resultMap id="emp-map" class="emp"> <result property="ename" column="ENAME" /> </resultMap> <parameterMap id="test" class="java.util.HashMap"> <parameter property="result" jdbcType="ORACLECURSOR" javaType="java.sql.ResultSet" mode="OUT" resultMap="emp-map" /> <parameter property="param1" jdbcType="VARCHAR" javaType="java.lang.String" mode="IN" /> </parameterMap> <procedure id="testCur" parameterMap="test"> {? = call selectemp(?)} </procedure> </sqlMap>
数据库脚本:
create or replace function scott.selectemp( param1 in varchar2 )return sys_refcursor is outcursor sys_refcursor; begin open outcursor for select ename from scott.emp where emp.ename like param1 ; return outcursor; end;
pojo类:
package com; public class Emp { private int empno; private String ename; private String job; private float sal; private float comm; public float getComm() { return comm; } public void setComm(float comm) { this.comm = comm; } public int getEmpno() { return empno; } public void setEmpno(int empno) { this.empno = empno; } public String getEname() { return ename; } public void setEname(String ename) { this.ename = ename; } public String getJob() { return job; } public void setJob(String job) { this.job = job; } public float getSal() { return sal; } public void setSal(float sal) { this.sal = sal; } }
测试代码:
Reader reader = Resources.getResourceAsReader("com/OracleSqlMapConfig.xml"); SqlMapClient client = SqlMapClientBuilder.buildSqlMapClient(reader); reader.close(); Map<String, Object> p = new HashMap<String, Object>(); p.put("param1", "%S%"); client.queryForObject("testCur", p); List list = (List) p.get("result"); for (int i = 0; i < list.size(); i++) { Emp emp = (Emp) list.get(i); System.out.println(emp.getEname()); }