`
terryfeng
  • 浏览: 504279 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

iBatis为业务对象添加可分页方法,扩展方法,调用Oracle

阅读更多

以活动日志为例,打开Persistence 项目

interface IActionLogDao

添加接口定义

        /// <summary>
        /// 根据可用标记获取所有的日志信息(分页)
        /// </summary>
        /// <returns></returns>
        List<ActionLog> GetActionLogListByActivity(ActionLog al, int start, int limit);

在ActionLogDao 中实现这个方法

/// <summary>
        /// 根据可用标记获取所有的日志信息(分页)
        /// </summary>
        /// <returns></returns>
        public List<ActionLog> GetActionLogListByActivity(ActionLog al, int start, int limit)
        {
            try
            {
                Hashtable ht = new Hashtable();
                ht.Add("obj", al);
                ht.Add("start", start * limit + 1);
                ht.Add("end", start * limit + limit);
                return base.ExecuteQueryForList<ActionLog>("ActionLog.FindAllByObjectForPage", ht) as List<ActionLog>;
            }
            catch (Exception)
            {
                throw;
            } 
        }

Services项目中使用

public DataPageInfo GetActionLogListForPageData(ActionLog al, int start, int limit)
        {
        
            DataPageInfo obj = new DataPageInfo();
            obj.DataList = base.Change2ArrayList<ActionLog>(ActionLogDao.GetActionLogListByActivity(al, start, limit));
            obj.SumNum = ActionLogDao.GetSumActionLogListByActivity(al);
            return obj;
        }

SqlMap 的XML 要加方法的SQL配置

 

<select id="ActionLog.FindAllByObjectForPage" parameterClass="System.Collections.IDictionary" resultMap="ActionLog_result">
         SELECT * FROM (SELECT ROWNUM RN, t_t.* FROM (select * from SYS_ACTION_LOG where 1=1

         <!--<isNotEmpty prepend="and" property="UserId">
             USER_ID like '%$obj.UserId$%'
         </isNotEmpty>
         <isGreaterThan prepend="and" property="LoginTime" compareValue="1900-01-01">
             LOGIN_TIME = #obj.LoginTime#
         </isGreaterThan>
         <isNotEmpty prepend="and" property="Action">
             ACTION like '%$obj.Action$%'
         </isNotEmpty>
         <isNotEmpty prepend="and" property="UserName">
             USER_NAME like '%$obj.UserName$%'
         </isNotEmpty>
         <isNotEmpty prepend="and" property="UserAttribute">
             USER_ATTRIBUTE like '%$obj.UserAttribute$%'
         </isNotEmpty>-->
        order by SYS_ACTION_LOG.Id desc) t_t WHERE
          <![CDATA[  ROWNUM <= #end# ]]>
          )
          <![CDATA[  WHERE RN >= #start# ]]>
      </select>
注意,每次调试都要关闭Asp.Net 调试器

 

扩展一个方法,扩展一个PO,获得其中的外联表结果集合

在PO里面扩展Combo类,添加一个列表成员

 

/// <summary>
/// 套餐代理商列表
/// </summary>
private List<StoComboAgent> stoComboAgentList;
/// <summary>
/// 套餐代理商列表
/// </summary>
private List<StoComboAgent> StoComboAgentList
{
    get { return stoComboAgentList; }
    set { stoComboAgentList = value; }
}

修改该 SQLMap 的XML配置信息

先修改该子表StoComboAgent的配置

<select id="StoComboAgent.FindByComboId" parameterClass="int" resultMap="StoComboAgent_result" extends="StoComboAgent.FindAll">
    WHERE (sto_combo_agent.combo_id = #value#)
</select>

然后再为Combo的XML文件中添加如下配置

<result property="StoComboAgentList" column="ID" select="StoComboAgent.FindByComboId"/>

添加新属性

先在PO的对象中添加属性

/// <summary>
        /// 上线时间
        /// </summary>
        private DateTime startupTime;
        /// <summary>
        /// 上线时间
        /// </summary>
        public DateTime StartupTime
        {
            get { return startupTime; }
            set { startupTime = value; }
        }

修改该SQLMap的对应内容

添加

<result property="StartupTime" column="Startup_Time"/>

再每个操作配置中都要加入这个属性

,startup_time

分享到:
评论

相关推荐

    ibatis调用oracle存储过程分页

    ibatis调用oracle存储过程分页

    SSI整合,有ibatis连接oracle的分页,ajax等技术

    在这个项目中,开发者可能采用了简单的SQL拼接方式,即在动态构建的SQL查询语句中添加LIMIT或OFFSET子句来实现分页,这种方式简单易懂,但可能不适用于所有Oracle版本和复杂查询场景。 "AJAX"是Asynchronous ...

    Ibatis 2.3.4 数据库无关分页

    在2.3.4这个版本中,Ibatis 提供了数据库无关的分页功能,这是一种在不依赖特定数据库语法的情况下实现分页查询的方法,有助于提高代码的可移植性和维护性。 数据库无关分页的核心思想是将分页参数(如当前页数和每...

    ssi_struts2_spring_ibatis 增删改查分页

    Spring的IoC容器管理对象的生命周期和依赖关系,而Spring的AOP模块则允许开发者在不修改源代码的情况下,对业务逻辑进行横切关注点的添加,如事务管理。 3. **iBatis**:这是一款持久层框架,它将SQL与Java代码分离...

    SSI框架搭建增删改查以及分页

    在实际操作中,开发者需要先配置数据库连接,然后根据业务需求编写Service和Mapper接口,接着在Action中调用Service方法来处理用户请求。最后,前端页面可以通过Ajax或者Form提交来发送请求,获取并显示处理结果。 ...

    ibatis.net

    总的来说,Ibatis.Net为.NET开发者提供了一种高效、灵活的数据库访问方式,使得他们可以专注于业务逻辑的实现,而不是繁琐的数据操作。通过学习和掌握Ibatis.Net,开发者可以提升项目的开发效率和质量。

    ibatis 例子

    **正文** `ibatis`,全称为`MyBatis`,是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。在Java世界里,`ibatis`为解决繁琐的...通过深入理解和熟练运用`ibatis`,可以构建出高效、可扩展的业务系统。

    springboot-pagehelper-druid.rar springboot分页框架搭建 连接池搭建

    虽然提供的描述提到使用Oracle数据库,但考虑到MySQL是更常见的开源选择,我们将以MySQL为例进行讲解。 首先,`SpringBoot`是一个由Pivotal团队开发的Java框架,它简化了创建独立的、生产级别的基于Spring的应用...

    struts1.2+batis+spring2.0+oracle10g集成例子(增加了分页功能)

    这是一个基于老旧技术栈的Web应用集成示例,主要包括Struts1.2、iBatis(现为MyBatis)和Spring2.0框架,以及Oracle10g数据库。这个项目可能是一个初学者为了学习和实践这些技术而创建的,特别加入了分页功能,以...

    jqgrid+struts2+ibatis增删改查

    2. Struts2 Action:接收jqGrid的请求,解析参数,调用业务逻辑方法。 3. iBatis SQL映射:根据Action传递的参数,执行相应的SQL语句,如INSERT、UPDATE、DELETE和SELECT。 4. 数据库操作:Oracle数据库执行iBatis...

    AppFramework_V1.0

    &lt;br&gt;7、 Sql模板和ORMap直接生成.cs原代码,编译为可执行代码,各种ORMap映射文件无需再随主程序集一起部署,提高了代码的安全性,提高了代码的可调试性,也提高了ORMap的性能。 &lt;br&gt; &lt;br&gt;下面三张表格...

    java必备知识点大全.pdf

    拦截器器的理解:拦截器是在AOP(面向切面编程)思想下扩展出来的一种技术,它可以拦截方法或方法调用。 Spring融入框架:Spring是目前最流行的开源框架,它提供了控制反转(Inversion of Control, IoC)和面向切面编程...

    java面试知识

    - 使用PreparedStatement对象的addBatch()方法添加SQL语句。 - 调用executeBatch()执行所有SQL语句。 ##### Oracle分页 - 使用ROWNUM伪列结合子查询实现分页。 - 或使用WITH子句配合RANK()函数实现更复杂的分页...

    框架面试笔试问答题.docx

    - **编写Service层**:调用Mapper接口提供的方法完成业务逻辑处理。 #### 9. 实现图片上传/文件下载/分页的方法 - **图片上传**:前端页面使用`&lt;input type="file"&gt;`控件选择图片,后端使用Servlet接收文件并保存...

    AppFramework_V1.0_New

    &lt;br&gt;7、 Sql模板和ORMap直接生成.cs原代码,编译为可执行代码,各种ORMap映射文件无需再随主程序集一起部署,提高了代码的安全性,提高了代码的可调试性,也提高了ORMap的性能。 &lt;br&gt; &lt;br&gt;下面三张表格...

    自整理Java关于基础和框架的面试题

    - **finalize**:对象被垃圾回收前调用的方法,已过时。 ##### Io流的层次结构 - 输入流:InputStream、Reader。 - 输出流:OutputStream、Writer。 ##### JAVA - Java是一种广泛使用的高级编程语言。 ##### ...

    最新Java面试宝典pdf版

    52、当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法? 33 53、线程的基本概念、线程的基本状态以及状态之间的关系 34 54、简述synchronized和java.util.concurrent.locks.Lock...

    Java面试宝典-经典

    52、当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法? 33 53、线程的基本概念、线程的基本状态以及状态之间的关系 34 54、简述synchronized和java.util.concurrent.locks.Lock...

Global site tag (gtag.js) - Google Analytics