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="test">
    <typeAlias alias="PAGES" type="com.xiao4r.crm.util.Pager"/>

<!-- 多条件查询 -->
    <select id="loadPayQuery" resultClass="PayQuery" parameterClass="PAGES">
          SELECT * FROM
          (SELECT A.*, ROWNUM RN  FROM
              (SELECT * FROM jchome_uinion_multichannel) A
              where A.cancelamount_status='1'
      <!-- 属性值不为空时拼接查询语句 -->
               <isNotEmpty prepend="AND" property="map.starttime">
                    A.pay_date > #map.starttime#
                </isNotEmpty>
                <isNotEmpty prepend="AND" property="map.endtime">
                    #map.endtime# >= A.pay_date
                </isNotEmpty>
                <isNotEmpty prepend="AND" property="map.source">
                    A.SOURCE=#map.source#
                </isNotEmpty>
                <isNotEmpty prepend="AND" property="map.service_name">
                    A.SERVICE_NAME=#map.service_name#
                </isNotEmpty>
              order by A.pay_date desc)
         WHERE RN BETWEEN #pageSize#*(#currentPage#-1)+1  AND  #pageSize#*#currentPage#
    </select>
    
    <select id="totalRowsAll" resultClass="java.lang.Integer" parameterClass="java.util.Map">
        select count(*) from jchome_uinion_multichannel
         where cancelamount_status='1'
        <isNotEmpty prepend="AND" property="starttime">
            pay_date > #starttime#
        </isNotEmpty>
        <isNotEmpty prepend="AND" property="endtime">
            #object.endtime# >= pay_date
        </isNotEmpty>
        <isNotEmpty prepend="AND" property="source">
            SOURCE=#source#
        </isNotEmpty>
        <isNotEmpty prepend="AND" property="service_name">
            SERVICE_NAME=#service_name#
        </isNotEmpty>
    </select>

</sqlMap>

Pager.java 类

package com.xiao4r.crm.util;

import java.util.List;
import java.util.Map;

public class Pager<T> {
    private int totalRows = 0; // 总行数

private int pageSize = 10; // 每页显示的行数,默认值为10

private int currentPage = 1; // 当前页号

private int totalPages = 0; //总页数

private List<T> results;// 此页查询出的结果
    
    private String param;//查询条件字符串

  //传递参数那里本来准备用 泛型来手机参数,但是在xml文件中 点出查询属性 报错:找不到object 对应属性值,所以后来采用map集合来接受多个参数
    private T object;//查询条件字符串
    
    //多条件查询可用map集合来接受参数
    private Map<Object, Object> map;    
    
    
    
    
    public void setPageInfo(int totalRows){
        this.setTotalRows(totalRows);
        this.totalPages = totalRows / pageSize + (totalRows % pageSize  == 0 ? 0 : 1);
    }

public int getCurrentPage() {
        return currentPage;
    }

public void setCurrentPage(int currentPage) {
        this.currentPage = currentPage;
    }

public int getPageSize() {
        return pageSize;
    }

public void setPageSize(int pageSize) {
        this.pageSize = pageSize;
    }

public int getTotalPages() {
        return totalPages;
    }

public void setTotalPages(int totalPages) {
        this.totalPages = totalPages;
    }

public int getTotalRows() {
        return totalRows;
    }

public void setTotalRows(int totalRows) {
        this.totalRows = totalRows;
    }

public List<T> getResults() {
        return results;
    }

public void setResults(List<T> results) {
        this.results = results;
    }

public boolean canShowFirst() {
        if (this.currentPage == 1 || this.totalPages == 0)
            return false;
        return true;
    }

public boolean canShowLast() {
        if (this.currentPage == this.totalPages || this.totalPages == 0)
            return false;
        return true;
    }

public boolean canShowPrevious() {
        if (this.currentPage == 1 || this.totalPages == 0)
            return false;
        return true;
    }

public boolean canShowNext() {
        if (this.currentPage == this.totalPages || this.totalPages == 0)
            return false;
        return true;
    }

public String getParam() {
        return param;
    }

public void setParam(String param) {
        this.param = param;
    }

public T getObject() {
        return object;
    }

public void setObject(T object) {
        this.object = object;
    }
    
    public Map<Object, Object> getMap() {
        return map;
    }

public void setMap(Map<Object, Object> map) {
        this.map = map;
    }
    
}

//Dao调用类

package com.xiao4r.crm.dao.impl;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.orm.ibatis.SqlMapClientTemplate;
import org.springframework.stereotype.Repository;

import com.xiao4r.crm.dao.PayQueryDao;
import com.xiao4r.crm.model.PayQuery;
import com.xiao4r.crm.util.Pager;

@Repository("payqueryDao")
public class PayQueryDaoImpl implements PayQueryDao {

@Autowired
    private SqlMapClientTemplate sqlMapClient;
    
    /*
     * 分页查询
     */
    @Override
    public Pager<PayQuery> loadPayQuery(Pager<PayQuery> pager) {
        Integer totalRows=(Integer)sqlMapClient.queryForObject("payquery.totalRowsAll",pager.getMap());
        List<PayQuery> results=sqlMapClient.queryForList("payquery.loadPayQuery",pager);
        pager.setResults(results);
        pager.setPageInfo(totalRows);
        return pager;
    }

}

IBatis按条件分页查询的更多相关文章

  1. asp.net mvc多条件+分页查询解决方案

    开发环境vs2010 css:bootstrap js:jquery bootstrap paginator 原先只是想做个mvc的分页,但是一般的数据展现都需要检索条件,而且是多个条件,所以就变成了 ...

  2. 【java】spring-data-jpa 集成hibernate实现多条件分页查询

    初次接触spring-data-jpa,实现多条件分页查询. 基础环境 Spring Boot+spring-data-jpa+hibernate+mysql 1.接口 要继承这个接口,这个接口提供了 ...

  3. thinkphp 带条件分页查询

    thinkphp 带条件分页查询:form表单传值时候,method='get'. 用 get 传值

  4. 项目一:第四天 1、快递员的条件分页查询-noSession,条件查询 2、快递员删除(逻辑删除) 3、基于Apache POI实现批量导入区域数据 a)Jquery OCUpload上传文件插件使用 b)Apache POI读取excel文件数据

    1. 快递员的条件分页查询-noSession,条件查询 2. 快递员删除(逻辑删除) 3. 基于Apache POI实现批量导入区域数据 a) Jquery OCUpload上传文件插件使用 b) ...

  5. ASPNETCOREAPI 跨域处理 SQL 语句拼接 多条件分页查询 ASPNET CORE 核心 通过依赖注入(注入服务)

    ASPNETCOREAPI 跨域处理 AspNetCoreApi 跨域处理 如果咱们有处理过MV5 跨域问题这个问题也不大. (1)为什么会出现跨域问题:  浏览器安全限制了前端脚本跨站点的访问资源, ...

  6. EasyUi+Spring Data 实现按条件分页查询

    Spring data 介绍 Spring data 出现目的 为了简化.统一 持久层 各种实现技术 API ,所以 spring data 提供一套标准 API 和 不同持久层整合技术实现 . 自己 ...

  7. Hibernate查询,返回new对象(注意这个新定义的类要有构造函数),使用sql带条件分页查询并且把结果显示到一个对象的集里面的解决方案

     IIndexDao package com.ucap.netcheck.dao; import com.ucap.netcheck.combination.beans.IndexCombinat ...

  8. JPA实现复杂条件分页查询

    相信熟悉Hibernate的人对于ORM给编程带来的便利于快捷一定不陌生,相对于MyBatis等需要编写复杂的SQL语句,ORM映射为我们带来的便利显而易见.但是,在获得便利的同时,失去的便是灵活性, ...

  9. springboot+thymeleaf+pageHelper带条件分页查询

    html层 <div> <a class="num"><b th:text="'共 '+ ${result.resultMap['pages ...

随机推荐

  1. Pandas-数据选取

    Pandas包对数据的常用数据切片功能 目录 [] where 布尔查找 isin query loc iloc ix map与lambda contains DataFrame的索引选取 [] 只能 ...

  2. mac 上的 python

    1.mac 上的 python 自己感觉很乱 1.额外安装的 自带的 python27-apple /System/Library/Frameworks/Python.framework/Versio ...

  3. 【荐2】Total Commander 7.57 配置选项 个性化设置备份,,,开启时如何自动最大化???(二)

    最近安装了下新版的“Total Commander 7.56”,发现它的默认设置是如此的不好用,现把对其个性化设置备份如下(符合大部分用户的操作习惯): 默认打开Total Commander 7.5 ...

  4. Python正则表达式详解

    我用双手成就你的梦想 python正则表达式 ^ 匹配开始 $ 匹配行尾 . 匹配出换行符以外的任何单个字符,使用-m选项允许其匹配换行符也是如此 [...] 匹配括号内任何当个字符(也有或的意思) ...

  5. jQuery treetable【表格多重折叠树功能及拖放表格子元素重新排列】

    今天有个表格需求做到多重折叠子元素功能,仔细想了下实现原理, 1.在html中,把父子节点的关系写在自定义属性,但对于节点是否有孩子(hasChild),是否是最后一个节点(isLastOne),是否 ...

  6. 【转】Caffe初试(四)数据层及参数

    要运行caffe,需要先创建一个模型(model),如比较常用的Lenet,Alex等,而一个模型由多个层(layer)构成,每一层又由许多参数组成.所有的参数都定义在caffe.proto这个文件中 ...

  7. python学习笔记(2)

    1.for循环 用户按照顺序循环可迭代对象中的内容. li = [11,22,33,44] for i in li: print i for循环的else 此功能目前只有for循环里面有发现. 具体条 ...

  8. UVA766 Sum of powers(1到n的自然数幂和 伯努利数)

    自然数幂和: (1) 伯努利数的递推式: B0 = 1 (要满足(1)式,求出Bn后将B1改为1 /2) 参考:https://en.wikipedia.org/wiki/Bernoulli_numb ...

  9. 在这个看脸的世界,该如何优雅的创建JS对象

    Javascript是一门解释型的语言,是基于对象的,严格来说并不怎么符合的面向对象的标准,显著的特点就是函数就是“一等对象”,与传统的面向对象语言不同的时,Javascript有“一千种”方法来创建 ...

  10. IDF实验室:牛刀小试

    被改错的密码[从格式和长度来推测出是MD5] 迷醉..人生第一道ctf题?据说是因为看起来像是MD5加密的格式,但是数了一下发现有33个字符,就推测???熊孩子多敲了一位进去.从32个变33个了,然后 ...