一.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存储过程分页
在IT领域,特别是数据库操作与Java开发中,利用ibatis框架调用...通过上述步骤,我们可以成功地使用ibatis调用Oracle存储过程,并处理返回的多个结果集。这不仅简化了数据库操作,还提高了代码的可读性和可维护性。
- 新特性:增加了对新数据库特性的支持,如存储过程的调用。 - API更新:提供了一些新的API,使得操作更加简洁直观。 - 错误修复:修复了1.6.2版本中的一些已知问题,提高了框架的稳定性和可靠性。 4. **文件...
2. **Oracle存储过程**:存储过程与函数类似,但不一定要返回值。它可以接收输入参数(IN参数)、输出参数(OUT参数)或者两者都有(IN/OUT参数),并可以执行一系列操作,如更新数据、查询等。例如,`PROCEDURE ...
### Ibatis调用Oracle存储过程返回自定义类型 在企业级应用开发中,尤其是在金融、保险等业务场景中,往往需要处理复杂的数据结构与逻辑。本文将深入探讨如何使用Ibatis框架来调用Oracle数据库中的存储过程,并实现...
本文将详细介绍如何使用iBATIS调用存储过程,并提供一个简单的示例来说明其过程。 首先,我们需要在数据库中创建一个存储过程。以下是一个Oracle数据库中的存储过程示例: ```sql CREATE OR REPLACE PROCEDURE pp ...
本文将详细探讨如何使用iBATIS调用Oracle存储过程,并处理返回的Cursor结果集。 首先,理解iBATIS调用存储过程的基本原理。iBATIS允许开发者在映射文件中定义存储过程调用,通过`<procedure>`标签来实现。在这个...
本篇文章将详细探讨如何在iBatis中调用Oracle的函数和存储过程,尤其是处理IN和OUT参数以及游标的场景。 首先,我们需要了解iBatis的基本工作原理。iBatis是一个SQL映射框架,它允许开发者将SQL语句写在XML配置文件...
3. **存储过程调用**:Ibatis可以通过`<select>`、`<procedure>`元素调用Oracle的存储过程,增强业务逻辑的封装性。 4. **连接池管理**:Ibatis可以与各种连接池(如C3P0、Druid、HikariCP等)集成,提高数据库连接...
对于Oracle,可能需要利用其特有的函数或特性,如PL/SQL存储过程、游标等。 3. **SQL映射接口**:在.NET 类中创建对应的接口,这个接口的方法对应XML文件中的SQL语句,实现业务逻辑与SQL的绑定。 4. **事务管理**...
本文将深入探讨如何使用iBatis调用存储过程并返回游标,这是一个在处理复杂数据库操作时常见的需求。 ### iBatis调用存储过程返回游标 #### 存储过程简介 存储过程是预先编译并存储在数据库中的SQL代码块,它可以...
3. **SQL语句的编写**:包含增删改查(CRUD)的各种操作,可能涉及到存储过程、触发器等高级特性。 4. **数据持久化操作**:通过Ibatis实现Java对象与数据库记录之间的映射,理解动态SQL的概念。 5. **事务管理**...
在实际项目中,使用Ibatis调用存储过程时,还应注意以下几点: 1. 不同的数据库系统可能有不同的存储过程调用语法,如Oracle、MySQL、SQL Server等,需要根据具体数据库进行调整。 2. 存储过程中的输出参数在Java...
2. **创建Maven项目**:初始化Maven项目,配置pom.xml文件,添加Spring、Struts、iBatis和Oracle驱动等相关依赖。 3. **配置Spring**:定义bean配置文件,声明Service、DAO、DataSource等组件,启用Spring的AOP和...
Oracle 和 iBatis 是两个在 Java Web 开发中广泛应用的技术。Oracle 是一款强大的关系型数据库管理系统,而 iBatis 是一个优秀的持久层框架,它能够将 SQL 与 Java 代码分离,提供更灵活的数据库访问方式。在这个"一...
这个实例展示了Java Web开发的基本流程,通过Struts2处理请求,iBatis管理数据库操作,Oracle提供数据存储。这样的组合在实际项目中非常常见,具有良好的可维护性和扩展性。理解并熟练掌握这一整合方式对于提升Java ...
通过这样的整合,开发者能够利用Spring MVC的控制反转和依赖注入,iBatis的SQL灵活性,以及Oracle的高性能存储,构建出一个稳定、高效的Web应用系统。同时,这个项目也为其他开发者提供了一个学习和参考的实例,帮助...
5. **使用iBatis调用**: 在iBatis的映射文件中,定义一个select标签来调用存储过程: ```xml {call your_procedure(#{param1, mode=IN, jdbcType=VARCHAR}, #{result, mode=OUT, jdbcType=VARCHAR})} ``` ...
1. **分层架构**:Struts2处理视图和控制,iBatis处理数据访问,Oracle存储数据,层次清晰,易于维护。 2. **灵活性**:iBatis允许直接编写SQL,可以适应各种复杂的查询需求。 3. **性能**:Oracle数据库提供了强大...