JFinal之旅——find方法及分页查询
来源:互联网 发布:想搞网络课直播 编辑:程序博客网 时间:2024/05/21 10:39
先说明下项目环境:Maven项目、JDK是1.7、编码是UTF-8、JFinal是3.1版本然后tomcat是8.0
里面的命名规则都在之前的博文有写到,写博文的时候也是重新搭建了一个项目,一步步来实现功能
- JFinal中的find方法
说明:一般的分页查询,都是多表查询,但JFinal的find的返回值是List(ps:M对应者模型类),但实际不然。
/** * 查询方法! * find * 2017年8月5日 下午4:22:48 */ public void find(){ //这里先介绍JFinal中的Find方法! String sql="SELECT pw_user.username,sys_usertype.usertypename FROM pw_user INNER JOIN sys_usertype ON sys_usertype.usertypeId = pw_user.usertypeId"; List<User> list=User.dao.find(sql); String userTypeName=list.get(0).get("usertypename"); renderText("结果值:"+list.toString()+"\n 读取到的值:"+userTypeName); }
说明:上面的查询语句中的usertypename不是原来User类中的字段,但还是能够从中赋值并读取
结果截图:
认识这点是很重要的
- 创建分页类
说明:一般分页查询,都会从前台传 2个参数:当前页及页码,但是不免会用到数据总数是否改变等情况,所以这里从前台传过来的参数有这些:当前页、当前页大小、总数据行数、最大页数。但是JFinal的page类又不能设置这些数据,就只能自己创建了实体类Pagination来接收并设置数据:
package com.gx.test.common.util;import java.io.Serializable;/** * 分页页码显示(原分页插件不可设置分页数据) * @title * @filename PaginationSupport.java * @author L-z * @date 2017年8月1日 下午3:11:09 * @version 1.0 */public class Pagination implements Serializable { private static final long serialVersionUID = 2234283310680151858L; /** 默认显示页码数 */ public static final int DEFAULT_OFFSET_SIZE = 3; /** 默认每页行数 */ public static final int DEFAULT_PAGE_SIZE = 20; /** 显示页码数 */ private int totalPage = DEFAULT_OFFSET_SIZE; /** 每页行数 */ private int pageSize = DEFAULT_PAGE_SIZE; /** 记录总数 */ private long totalRow; /** 当前页码 */ private int pageNumber = 1; public int getTotalPage() { return totalPage; } public void setTotalPage(int totalPage) { this.totalPage = totalPage; } public int getPageSize() { return pageSize; } public void setPageSize(int pageSize) { this.pageSize = pageSize; } public long getTotalRow() { return totalRow; } public void setTotalRow(long totalRow) { this.totalRow = totalRow; } public int getPageNumber() { return pageNumber; } public void setPageNumber(int pageNumber) { this.pageNumber = pageNumber; } /** * 第一条数据位置 * * @return */ public int getFirstResult() { return (pageNumber - 1) * pageSize; } /** * 获取总页数 */ public long getPageCount() { if (totalRow % pageSize == 0) return totalRow / pageSize; else return (totalRow / pageSize) + 1; }}
- 接收并设置参数
说明:查询条件肯定不止分页参数,所有要创建个UserDto来继承Pagination类。
使用Dto来接收参数有个好处:如果查询条件要增加或修改字段,直接在Dto里修改成员就可以的。
package com.gx.test.pojo.dto;import com.gx.test.common.util.Pagination;/** * 分页查询条件 * @title * @filename UserDto.java * @author L-z * @date 2017年8月2日 上午9:08:00 * @version 1.0 */public class UserDto extends Pagination { /** * @title */ private static final long serialVersionUID = 1952110800486176148L; /** * 用户姓名 */ private String userName; /** * 用户类别 */ private String userType; private Integer userId; public Integer getUserId() { return userId; } public void setUserId(Integer userId) { this.userId = userId; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getUserType() { return userType; } public void setUserType(String userType) { this.userType = userType; } @Override public String toString() { return "UserDto [userName=" + userName + ", userType=" + userType + ", userId=" + userId + "]"; }}
下面是控制器代码
/** * 分页查询 * pageFind * 2017年8月5日 下午4:42:43 */ public void pageFind(){ //接收参数 UserDto userDto=super.getBean(UserDto.class); //手动设置值 userDto.setPageNumber(1); userDto.setPageSize(10); //实际上只要调用 serivce中的方法 传userDto参数即可! //这里我们为了简单 就直接实现serviceImpl中的方法 //暂时不设置查询条件 // sql语句:SELECT pw_user.username,sys_usertype.usertypename FROM pw_user INNER JOIN sys_usertype ON sys_usertype.usertypeId = pw_user.usertypeId"; String from =" FROM pw_user INNER JOIN sys_usertype ON sys_usertype.usertypeId = pw_user.usertypeId "; String totalRowSql="select count(*)"+from; String findSql="SELECT pw_user.username,sys_usertype.usertypename "+from ; Page<User> page=User.dao.paginateByFullSql(userDto.getPageNumber(), userDto.getPageSize(), totalRowSql, findSql); renderText("分页数据:\n"+page.toString()+"\n数据集合:"+page.getList().toString()); }
结果截图:
- 结论
这里主要介绍了JFinal中的find方法的强大,并且可以看到分页查询的方式、思路。这里的分页方法还不够简洁,接下来的一篇博文讲介绍JFinal中的sql管理与动态生成,来实现多表查询及分页。
阅读全文
0 0
- JFinal之旅——find方法及分页查询
- JFinal之旅——Sql 管理与动态生成实现简洁分页
- JFinal之旅——数据库链接
- jfinal结合layPage进行分页查询操作
- MongoDB分页查询的方法及性能
- JFinal之旅——Maven下搭建项目
- JFinal之旅——针对增改操作
- hql 分页及查询
- sql查询及分页
- JFinal 中使用 Dubbo —— 2 部署及运行
- MongoDB 分页查询的skip方法及性能
- mongoDB查询之find
- oracle 数据之分页查询————rownum
- 数据库分页查询方法
- 数据库分页查询方法
- 数据库分页查询方法
- 数据库分页查询方法
- 数据库分页查询方法
- 正则表达式后向引用
- css根据屏幕大小切换样式
- python爬虫进阶(三):微博的抓取
- mha配置高可用mysql
- opencv 视频操作
- JFinal之旅——find方法及分页查询
- HDU
- 统计0~n中0~9的个数
- Jzzhu and Cities ----CodeForces
- pip和deb的离线打包安装(备份恢复)
- SpringBoot框架中URL参数如何进行Base64加密解密
- 关于netstat的理解
- [UVa 1152] 和为0的四个值(4 Values whose Sum is 0)
- mysql 如何创建存储过程