`

使用PageObject做分页

阅读更多

/**
* 获取指定页的记录
*
* @param sql
*            要执行的sql
* @param args
*            要执行sql的参数
* @param req
*            页面传递的参数
* @return PageObject
*/
public PageObject queryForMPageList(String sql, Object[] args, Map req) {
int totalCount = 1;

int start = NumberUtils.toInt(ObjectUtils.toString(req.get("start"),
"1"));
int limit = NumberUtils.toInt(ObjectUtils.toString(req.get("limit"),
"25"));
String sort = ObjectUtils.toString(req.get("sort"));
String dir = ObjectUtils.toString(req.get("dir"));
System.out.println("sort是"+sort+",dir是"+dir);
StringBuffer buildsql = new StringBuffer();
buildsql.append("select * from (");
buildsql.append(" select rownum temp_num,temp.* from (");
if (sort != null && !"".equals(sort)) {
String pa = "order by (,|\\.|\\w|\\d| )+( asc| desc)?( Nulls last)?( Nulls first)?\\s?$";
String re = " order by " + sort + " " + dir;
System.out.println("re是"+re);
Matcher matcher = Pattern.compile(pa, Pattern.CASE_INSENSITIVE)
.matcher(sql);
if (matcher.find()) {
buildsql.append(matcher.replaceFirst(re));
System.out.println("matcher.replaceFirst(re)是"+matcher.replaceFirst(re));
}
} else {
buildsql.append(sql);
}
buildsql.append(" ) temp where rownum<="
+ String.valueOf(start + limit));
buildsql.append(") where temp_num>" + String.valueOf(start));

List list = super.getJdbcTemplate().queryForList(buildsql.toString(),
args);

String countsql = "select count(*) from (" + sql + ")";
totalCount = super.getJdbcTemplate().queryForInt(countsql, args);

PageObject page = new PageObject();
page.setDatasource(list);
page.setTotalCount(totalCount);

int _absolutePage = (int)Math.ceil(totalCount * 1.0/limit);
page.setAbsolutePage(_absolutePage);

int _currentPage = start/limit + 1;
page.setCurrentPage(_currentPage);

return page;
}
分享到:
评论

相关推荐

    最强大的JAVA分页类

    使用在线分页 办法 直接调用 public List showPage(int pageSize,int page,ArrayList&lt;Object&gt; list) 方法即可。 使用离线分页 办法 调用 public boolean checkList() 判断 当前实体 中 param: list 是否为空 空则...

    java自定义分页标签实现带条件的分页查询

    jsp 自定义分页查询 可以带查询条件 因为网上很多 都不能带查询条件 所以本人做了修改 可以实现自定义 带条件的查询

    JS分页效果JS分页效果

    if (this.pageCount &gt;= startPage + 10) strHtml += '&lt;span title="Next 10 Pages"&gt;&lt;a href="javascript:' + this.name + '.toPage(' + (startPage + 10) + ');"&gt;...&lt;/a&gt;&lt;/span&gt;'; if (nextPage &gt; this....

    C#自定义分页控件

    private void Page_Load(object sender, System.EventArgs e) { this.AspNetPager1.PageSize=10; //设置每也显示的记录条数 if(!IsPostBack) //只在页面第一次加载时起作用 { SqlDBManager db = new ...

    ArcGIS API for Flex 2.0开发应用之分页查询

    Query对象新增加了一个属性Objectids,用于指定执行查询的objectid的范围,这就使我们可以根据executeForIds()得到的每一夜的Objectids去执行查询,实现分页查询。例如,以下代码所示: ``` public function ...

    jPage分页(只针对Sql Server数据库)

    protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { string sql="select * from news"; Jpage1.Jselect = sql; // 查询语句 Jpage1.Jsortfield = "id desc";//排序方式 Jpage1....

    C# winform分页控件源码

    private void btn_query_Click(object sender, EventArgs e) { DataSource=GetData(); winFormPager1.RecordCount =dt.Rows.Count; } //分页控件分页事件 private void winFormPager1_PageChanged() { GV_...

    ajax+C# 无刷新分页控件

    C#编写的ajax无刷新分页控件。 NikeBoyAjaxPager就是新增的无刷新分页控件,同样支持任何数据控件,... protected void Page_Load(object sender, EventArgs e) { NikeBoyAjaxPager1.Count = 1111; } QQ:85288287

    c#Winform中如何在datagridview中进行分页?

    private void Page_Load(object sender, EventArgs e) { conn.Open(); // 打开数据库链接 string strSql = "SELECT * FROM 人员档案"; // 数据库执行语句 SqlDataAdapter sda = new SqlDataAdapter(strSql, conn)...

    Java jdbc分页工具类

    java jdbc 分页工具类,以及返回集合数据的封装, private int limit = 10;//每页的个数 /** * 当前页 */ private int page; // /** * 总行数 */ private int totalRows; // /** * 总页数 */ private ...

    .net50个常用方法简单华丽的分页控件功能大的分页控件 50个实用方法

    ///ElseCkeck()返回页面验证码图片 使用方法:单独创建一个页面 在首次加载事件里写 AspNetHelp.ElseCkeck(Page); 在使用验证码的页面直接写 img src="这个页面的路径" 注意验证码保存在 Session["CheckCode"]中 这里...

    服务器控件分页

    this.currentpage.Text = Convert.ToString(Convert.ToInt32(currentpage.Text) - 1); this.LoadRankUnitPrice(); } /// &lt;summary&gt; 下一页 protected void Next_Click(object sender, EventArgs e) { this....

    分页工具类

    * 分页查询 */ @RequestMapping("queryPageList") @ResponseBody public PageResult queryPageList(Integer page,Integer rows, User user) { return userService.queryPageList(page,rows,user); } ...

    C# asp.net /分页控件

    分页控件,拖曳就可以用了,,,需在调用的页面绑定事件: void Page_LoadComplete(object sender,Evergs e){ PaginationControl1.DataBindDdlSelectPageIndex(); BindData_GVUser(); } GridView: /// /// ...

    通用分页组件

    } &lt;br/&gt;} &lt;br/&gt;} &lt;br/&gt;如果是WEB页面上的分页可以直接使用 List data=WebPageUtils.acPageData(request,DemoPage.class); 就可以得到数据了,其中request中存放了ActionTypes中定义的各个...

    Asp.Net分页控件【AspNetPager】拖入即用!

    这个分页控件名为AspNetPager控件,是Asp.net上使用率最高的分页控件,想怎么分就怎么分.附带'超详细代码注释",好用请给评论. 基本步骤: 1.拖拽控件(存放到到Bin目录下,再拖入工具箱) 2.粘贴复制(已放出实例源码) 3....

    jspPageControlor分页插件11.2版

    不管jsp使用的什么开发模式,也不管使用何种数据库,只要按插件要求进行返回操作,就可轻松的实现分页。 2、此插件将分页与搜索分离,高度解耦合,可在分页的同时,轻松实现搜索操作。 3、程序绿色,简洁,...

    php 高级 分页类 源码

    $ajaxpage=new page(array('total'=&gt;1000,'perpage'=&gt;20,'ajax'=&gt;'ajax_page','page_name'=&gt;'test')); echo 'mode:1 '.$ajaxpage-&gt;show(); 采用继承自定义分页显示模式: demo:[url=...

    list分页(包含怎么调用分页的例子)

    list的分页 import java.util.ArrayList; import java.util.List; import com.jsp.vo.Client; /** * PageBean * * @author apple * */ public class Page { private int currentPage; // 当前页数 ...

    分页插件,适配PC移动端

    Pagination.Page($(".ht-page"), i, 10000, 10); } /* * 初始化插件 * @param object:翻页容器对象 * @param function:回调函数 * */ Pagination.init($(".ht-page"), pageChange); /* * 首次调用 * @...

Global site tag (gtag.js) - Google Analytics