CREATE TABLE "USER_BASIC_INFO" ( "USER_ID" NUMBER(10,0) NOT NULL ENABLE, "USER_NAME" VARCHAR2(50 BYTE) NOT NULL ENABLE, "REAL_NAME" VARCHAR2(50 BYTE), "PASSWORD" VARCHAR2(32 BYTE) NOT NULL ENABLE, "EMAIL" VARCHAR2(50 BYTE) NOT NULL ENABLE, "USER_TYPE" VARCHAR2(50 BYTE), "USER_STATE" VARCHAR2(50 BYTE), "LOGIN_COUNT" NUMBER(8,0) DEFAULT 0, "QUESTION" VARCHAR2(200 BYTE), "ANSWER" VARCHAR2(200 BYTE), "ACCOUNT" VARCHAR2(50 BYTE) DEFAULT -1, "BRANCH_ID" VARCHAR2(50 BYTE) DEFAULT -1, "CREATE_DATE" DATE DEFAULT sysdate, "MODIFY_DATE" DATE DEFAULT sysdate, "LAST_VISIT" DATE DEFAULT sysdate, "USER_LEVEL" VARCHAR2(50 BYTE), "EXPERIENCE_TIME" NUMBER(4,0) DEFAULT 0, "CUSTID" NUMBER(20,0), CONSTRAINT "PK_USER_BASIC_INFO" PRIMARY KEY ("USER_ID") )
CREATE TABLE "USER_EXTEND_INFO" ( "USER_ID" NUMBER(10,0) NOT NULL ENABLE, "SEX" VARCHAR2(50 BYTE), "BIRTHDAY" DATE, "RACE" VARCHAR2(50 BYTE), "PROVINCE" VARCHAR2(50 BYTE), "CITY" VARCHAR2(50 BYTE), "CARD_TYPE" VARCHAR2(50 BYTE), "CARD_ID" VARCHAR2(50 BYTE), "TELEPHONE" VARCHAR2(50 BYTE), "MOBILEPHONE" VARCHAR2(50 BYTE), "FAX" VARCHAR2(50 BYTE), "ADDRESS" VARCHAR2(100 BYTE), "POST_CODE" VARCHAR2(50 BYTE), "DEGREE" VARCHAR2(50 BYTE), "VOCATION" VARCHAR2(50 BYTE), "SOURCE" VARCHAR2(100 BYTE), CONSTRAINT "PK_USER_EXTEND_INFO" PRIMARY KEY ("USER_ID") )
create or replace PACKAGE Types AS TYPE ref_cursor IS REF CURSOR; END;
create or replace PROCEDURE QUERY_USER_BASIC_INFO ( P_USER_NAME IN USER_BASIC_INFO.USER_NAME % TYPE , P_REAL_NAME IN USER_BASIC_INFO.REAL_NAME % TYPE , P_USER_TYPE IN USER_BASIC_INFO.USER_TYPE % TYPE , P_BRANCH_ID IN USER_BASIC_INFO.BRANCH_ID % TYPE , P_BEGIN_DATE IN DATE , P_END_DATE IN DATE , P_BEGIN IN NUMBER , P_END IN NUMBER , P_RESULT OUT NUMBER , P_CURSOR OUT TYPES.ref_cursor ) AS v_sql varchar2(1000); v_sqlCount varchar2(1000); BEGIN v_sql:='SELECT * FROM ( SELECT row_.*, ROWNUM rownum_ FROM ( SELECT e.*,f.SEX, f.BIRTHDAY, f.RACE, f.PROVINCE, f.CITY, f.CARD_TYPE, f.CARD_ID, f.TELEPHONE, f.MOBILEPHONE, f.FAX, f.ADDRESS, f.POST_CODE, f.DEGREE, f.VOCATION, f.SOURCE,g.key_name FROM USER_BASIC_INFO e left join user_extend_info f on e.user_id=f.user_id left join dictionary g on e.user_type=g.key_code and g.parent_id=11 where 1=1'; IF P_USER_NAME IS NOT NULL THEN v_sql := v_sql || 'and e.USER_NAME LIKE ' || '''' || P_USER_NAME || ''''; ELSE IF P_REAL_NAME IS NOT NULL THEN v_sql := v_sql || 'and e.REAL_NAME LIKE ' || '''' || P_REAL_NAME || ''''; ELSE IF P_USER_TYPE IS NOT NULL THEN v_sql := v_sql || 'and e.USER_TYPE = ' || '''' || P_USER_TYPE || ''''; ELSE IF P_BRANCH_ID IS NOT NULL THEN v_sql := v_sql || 'and e.BRANCH_ID = ' || '''' || P_BRANCH_ID || ''''; ELSE IF P_BEGIN_DATE IS NOT NULL THEN v_sql := v_sql || 'and e.CREATE_DATE between ' || P_BEGIN_DATE || 'and ' || P_END_DATE; END IF; END IF; END IF; END IF; END IF; v_sql := v_sql || ') row_ WHERE ROWNUM <= ' || P_END || ') WHERE rownum_ >' || P_BEGIN; --DBMS_OUTPUT.PUT_LINE(v_sql); open P_CURSOR for v_sql; v_sqlCount := 'SELECT count(1) FROM USER_BASIC_INFO e left join user_extend_info f on e.user_id=f.user_id'; IF P_USER_NAME IS NOT NULL THEN v_sql := v_sql || 'and e.USER_NAME LIKE ' || '''' || P_USER_NAME || ''''; ELSE IF P_REAL_NAME IS NOT NULL THEN v_sql := v_sql || 'and e.REAL_NAME LIKE ' || '''' || P_REAL_NAME || ''''; ELSE IF P_USER_TYPE IS NOT NULL THEN v_sql := v_sql || 'and e.USER_TYPE = ' || '''' || P_USER_TYPE || ''''; ELSE IF P_BRANCH_ID IS NOT NULL THEN v_sql := v_sql || 'and e.BRANCH_ID = ' || '''' || P_BRANCH_ID || ''''; ELSE IF P_BEGIN_DATE IS NOT NULL THEN v_sql := v_sql || 'and e.CREATE_DATE between ' || P_BEGIN_DATE || 'and ' || P_END_DATE; END IF; END IF; END IF; END IF; END IF; EXECUTE IMMEDIATE v_sqlCount into P_RESULT; EXCEPTION WHEN NO_DATA_FOUND THEN P_RESULT := 9006; WHEN OTHERS THEN P_RESULT := 9005; END QUERY_USER_BASIC_INFO;
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" "http://www.ibatis.com/dtd/sql-map-2.dtd"> <!-- iBatis SQL Map 文件 --> <sqlMap namespace="com.cssweb.idm.user.pojo.UserBasicInfo"> <typeAlias alias="userBasicInfo" type="com.cssweb.idm.user.pojo.UserBasicInfo"/> <resultMap id="detailMap" class="userBasicInfo"> <result property="userId" column="USER_ID" jdbcType="Long"/> <result property="userName" column="USER_NAME" jdbcType="String" nullValue=""/> <result property="realName" column="REAL_NAME" jdbcType="String" nullValue=""/> <result property="password" column="PASSWORD" jdbcType="String" nullValue=""/> <result property="email" column="EMAIL" jdbcType="String" nullValue=""/> <result property="userType" column="USER_TYPE" jdbcType="String" nullValue=""/> <result property="userState" column="USER_STATE" jdbcType="String" nullValue=""/> <result property="loginCount" column="LOGIN_COUNT" jdbcType="java.lang.Integer" nullValue="0"/> <result property="question" column="QUESTION" jdbcType="String" nullValue=""/> <result property="answer" column="ANSWER" jdbcType="String" nullValue=""/> <result property="account" column="ACCOUNT" jdbcType="java.lang.Integer" nullValue="0"/> <result property="branchId" column="BRANCH_ID" jdbcType="String" nullValue=""/> <result property="createDate" column="CREATE_DATE" jdbcType="java.util.Date" nullValue="1900/01/01 00:00:00"/> <result property="modifyDate" column="MODIFY_DATE" jdbcType="java.util.Date" nullValue="1900/01/01 00:00:00"/> <result property="lastVisit" column="LAST_VISIT" jdbcType="java.util.Date" nullValue="1900/01/01 00:00:00"/> <result property="userLevel" column="USER_LEVEL" jdbcType="String" nullValue=""/> <result property="experienceTime" column="EXPERIENCE_TIME" jdbcType="java.lang.Integer" nullValue="0"/> <result property="custId" column="CUSTID" jdbcType="Long" nullValue="0"/> <result property="sex" column="SEX" jdbcType="String" nullValue=""/> <result property="birthday" column="BIRTHDAY" jdbcType="java.util.Date" nullValue="1900/01/01 00:00:00"/> <result property="race" column="RACE" jdbcType="String" nullValue=""/> <result property="province" column="PROVINCE" jdbcType="String" nullValue=""/> <result property="city" column="CITY" jdbcType="String" nullValue=""/> <result property="cardType" column="CARD_TYPE" jdbcType="String" nullValue=""/> <result property="cardId" column="CARD_ID" jdbcType="String" nullValue=""/> <result property="telephone" column="TELEPHONE" jdbcType="String" nullValue=""/> <result property="mobilePhone" column="MOBILEPHONE" jdbcType="String" nullValue=""/> <result property="fax" column="FAX" jdbcType="String" nullValue=""/> <result property="address" column="ADDRESS" jdbcType="String" nullValue=""/> <result property="postCode" column="POST_CODE" jdbcType="String" nullValue=""/> <result property="degree" column="DEGREE" jdbcType="String" nullValue=""/> <result property="vocation" column="VOCATION" jdbcType="String" nullValue=""/> <result property="source" column="SOURCE" jdbcType="String" nullValue=""/> <result property="typeName" column="KEY_NAME" jdbcType="String" nullValue=""/> </resultMap> <parameterMap id="procQueryMap" class="java.util.HashMap" > <parameter property="P_USER_NAME" jdbcType="VARCHAR" javaType="java.lang.String" mode="IN"/> <parameter property="P_REAL_NAME" jdbcType="VARCHAR" javaType="java.lang.String" mode="IN"/> <parameter property="P_USER_TYPE" jdbcType="VARCHAR" javaType="java.lang.String" mode="IN"/> <parameter property="P_BRANCH_ID" jdbcType="VARCHAR" javaType="java.lang.String" mode="IN"/> <parameter property="P_BEGIN_DATE" jdbcType="DATE" javaType="java.util.Date" mode="IN"/> <parameter property="P_END_DATE" jdbcType="DATE" javaType="java.util.Date" mode="IN"/> <parameter property="P_BEGIN" jdbcType="INTEGER" javaType="java.lang.Integer" mode="IN"/> <parameter property="P_END" jdbcType="INTEGER" javaType="java.lang.Integer" mode="IN"/> <parameter property="P_RESULT" jdbcType="INTEGER" javaType="java.lang.Integer" mode="OUT"/> <parameter property="P_CURSOR" javaType="java.sql.ResultSet" jdbcType="ORACLECURSOR" mode="OUT"/> </parameterMap> <procedure id="queryUserBasicInfoProc" parameterMap="procQueryMap" resultMap="detailMap"> {call QUERY_USER_BASIC_INFO (?,?,?,?,?,?,?,?,?,?)} </procedure> </sqlMap>
/** * <p>this method is used by people get user list. * @param map * @return List * @throws DataAccessException */ @SuppressWarnings("unchecked") public List<UserBasicInfo> getList(Map<String, Object> map) throws DataAccessException { return this.getSqlMapClientTemplate().queryForList(statementName + ".queryUserBasicInfoProc", map); }
您还没有登录,请您登录后再发表评论
ibatis调用oracle存储过程分页
在IT领域,特别是数据库操作与Java开发中,利用ibatis框架调用...通过上述步骤,我们可以成功地使用ibatis调用Oracle存储过程,并处理返回的多个结果集。这不仅简化了数据库操作,还提高了代码的可读性和可维护性。
### Ibatis调用Oracle存储过程返回自定义类型 在企业级应用开发中,尤其是在金融、保险等业务场景中,往往需要处理复杂的数据结构与逻辑。本文将深入探讨如何使用Ibatis框架来调用Oracle数据库中的存储过程,并实现...
本文将详细探讨如何使用iBATIS调用Oracle存储过程,并处理返回的Cursor结果集。 首先,理解iBATIS调用存储过程的基本原理。iBATIS允许开发者在映射文件中定义存储过程调用,通过`<procedure>`标签来实现。在这个...
ibatIS调用存储过程是数据库操作中常见的一种技术,特别是在复杂的业务逻辑处理或数据批量操作时,存储过程能够提供更高的效率和更好的性能。本文将深入探讨如何在ibatIS框架中调用存储过程,以及涉及到的相关知识点...
其中,`id`是方法名,`parameterType`表示没有输入参数,`resultType`则是返回结果的类型,这里我们假设存储过程返回的是一个Map。 2. **带参数的存储过程** 对于带参数的存储过程,我们需要在`<select>`标签内...
iBatis调用存储过程
在Java开发中,使用iBATIS(现在称为MyBatis)作为持久层框架时,调用数据库的存储过程是一种常见的需求。本文将详细介绍如何使用iBATIS调用存储过程,并提供一个简单的示例来说明其过程。 首先,我们需要在数据库...
根据提供的文件信息,标题为“ibatis调用存储过程”,主要关注的是如何使用ibatis框架来调用数据库中的存储过程。下面将详细解释ibatis框架的基本概念、存储过程的概念以及如何在ibatis中配置和执行存储过程。 ### ...
2. **Oracle存储过程**:存储过程与函数类似,但不一定要返回值。它可以接收输入参数(IN参数)、输出参数(OUT参数)或者两者都有(IN/OUT参数),并可以执行一系列操作,如更新数据、查询等。例如,`PROCEDURE ...
### Ibatis调用存储过程详解 #### 一、引言 在实际的软件开发过程中,存储过程因其执行效率高及数据库级别的安全性等优点被广泛应用于各种业务场景之中。而对于使用Ibatis作为持久层框架的应用来说,如何有效地...
在iBatis中,当存储过程返回一个游标时,你可以将其映射为一个Java List。为此,你需要在Java方法中声明一个List类型的参数,而在SQL映射文件中,使用`<resultMap>`定义一个结果集映射,然后在`<selectResult>`标签...
### iBatis调用存储过程返回游标 #### 存储过程简介 存储过程是预先编译并存储在数据库中的SQL代码块,它可以接受输入参数,执行一系列操作,并返回一个或多个输出结果。当需要频繁执行复杂的数据库操作时,使用...
3. **存储过程调用**:Ibatis可以通过`<select>`、`<procedure>`元素调用Oracle的存储过程,增强业务逻辑的封装性。 4. **连接池管理**:Ibatis可以与各种连接池(如C3P0、Druid、HikariCP等)集成,提高数据库连接...
"IBatis查删改查与调用存储过程 mysql数据库" 这个标题揭示了本文将深入探讨如何使用IBatis框架在MySQL数据库中执行基本的CRUD(创建、读取、更新、删除)操作,以及如何调用存储过程。IBatis是一个轻量级的Java持久...
ibatis 读取oracle clob类型
在调用存储过程时,Ibatis允许开发者编写SQL语句或存储过程,然后在XML配置文件中定义这些操作,使得调用过程直观且易于维护。 Blazeds是一个Flash Remoting解决方案,主要用于Flex和Java之间的数据通信。通过...
1. 不同的数据库系统可能有不同的存储过程调用语法,如Oracle、MySQL、SQL Server等,需要根据具体数据库进行调整。 2. 存储过程中的输出参数在Java代码中必须设置初始值,否则可能会遇到空指针异常。 3. 在Ibatis 3...
3. **SQL语句的编写**:包含增删改查(CRUD)的各种操作,可能涉及到存储过程、触发器等高级特性。 4. **数据持久化操作**:通过Ibatis实现Java对象与数据库记录之间的映射,理解动态SQL的概念。 5. **事务管理**...
相关推荐
ibatis调用oracle存储过程分页
在IT领域,特别是数据库操作与Java开发中,利用ibatis框架调用...通过上述步骤,我们可以成功地使用ibatis调用Oracle存储过程,并处理返回的多个结果集。这不仅简化了数据库操作,还提高了代码的可读性和可维护性。
### Ibatis调用Oracle存储过程返回自定义类型 在企业级应用开发中,尤其是在金融、保险等业务场景中,往往需要处理复杂的数据结构与逻辑。本文将深入探讨如何使用Ibatis框架来调用Oracle数据库中的存储过程,并实现...
本文将详细探讨如何使用iBATIS调用Oracle存储过程,并处理返回的Cursor结果集。 首先,理解iBATIS调用存储过程的基本原理。iBATIS允许开发者在映射文件中定义存储过程调用,通过`<procedure>`标签来实现。在这个...
ibatIS调用存储过程是数据库操作中常见的一种技术,特别是在复杂的业务逻辑处理或数据批量操作时,存储过程能够提供更高的效率和更好的性能。本文将深入探讨如何在ibatIS框架中调用存储过程,以及涉及到的相关知识点...
其中,`id`是方法名,`parameterType`表示没有输入参数,`resultType`则是返回结果的类型,这里我们假设存储过程返回的是一个Map。 2. **带参数的存储过程** 对于带参数的存储过程,我们需要在`<select>`标签内...
iBatis调用存储过程
在Java开发中,使用iBATIS(现在称为MyBatis)作为持久层框架时,调用数据库的存储过程是一种常见的需求。本文将详细介绍如何使用iBATIS调用存储过程,并提供一个简单的示例来说明其过程。 首先,我们需要在数据库...
根据提供的文件信息,标题为“ibatis调用存储过程”,主要关注的是如何使用ibatis框架来调用数据库中的存储过程。下面将详细解释ibatis框架的基本概念、存储过程的概念以及如何在ibatis中配置和执行存储过程。 ### ...
2. **Oracle存储过程**:存储过程与函数类似,但不一定要返回值。它可以接收输入参数(IN参数)、输出参数(OUT参数)或者两者都有(IN/OUT参数),并可以执行一系列操作,如更新数据、查询等。例如,`PROCEDURE ...
### Ibatis调用存储过程详解 #### 一、引言 在实际的软件开发过程中,存储过程因其执行效率高及数据库级别的安全性等优点被广泛应用于各种业务场景之中。而对于使用Ibatis作为持久层框架的应用来说,如何有效地...
在iBatis中,当存储过程返回一个游标时,你可以将其映射为一个Java List。为此,你需要在Java方法中声明一个List类型的参数,而在SQL映射文件中,使用`<resultMap>`定义一个结果集映射,然后在`<selectResult>`标签...
### iBatis调用存储过程返回游标 #### 存储过程简介 存储过程是预先编译并存储在数据库中的SQL代码块,它可以接受输入参数,执行一系列操作,并返回一个或多个输出结果。当需要频繁执行复杂的数据库操作时,使用...
3. **存储过程调用**:Ibatis可以通过`<select>`、`<procedure>`元素调用Oracle的存储过程,增强业务逻辑的封装性。 4. **连接池管理**:Ibatis可以与各种连接池(如C3P0、Druid、HikariCP等)集成,提高数据库连接...
"IBatis查删改查与调用存储过程 mysql数据库" 这个标题揭示了本文将深入探讨如何使用IBatis框架在MySQL数据库中执行基本的CRUD(创建、读取、更新、删除)操作,以及如何调用存储过程。IBatis是一个轻量级的Java持久...
ibatis 读取oracle clob类型
在调用存储过程时,Ibatis允许开发者编写SQL语句或存储过程,然后在XML配置文件中定义这些操作,使得调用过程直观且易于维护。 Blazeds是一个Flash Remoting解决方案,主要用于Flex和Java之间的数据通信。通过...
1. 不同的数据库系统可能有不同的存储过程调用语法,如Oracle、MySQL、SQL Server等,需要根据具体数据库进行调整。 2. 存储过程中的输出参数在Java代码中必须设置初始值,否则可能会遇到空指针异常。 3. 在Ibatis 3...
3. **SQL语句的编写**:包含增删改查(CRUD)的各种操作,可能涉及到存储过程、触发器等高级特性。 4. **数据持久化操作**:通过Ibatis实现Java对象与数据库记录之间的映射,理解动态SQL的概念。 5. **事务管理**...