当前位置: 首页 > news >正文

织梦做网站主页容易吗主题营销活动创意

织梦做网站主页容易吗,主题营销活动创意,溧阳网页设计,嘉定营销型 网站制作三 PageHelper 1 分页所需 // 原分页所需 1. 定义QueryObject类,传递分页参数,currentPage,pageSize,get start();方法 2. selectForCount()方法,总条数小于等于0说明不需要分页,大于0说明可以分页 3. se…

三 PageHelper

1 分页所需

// 原分页所需
1. 定义QueryObject类,传递分页参数,currentPage,pageSize,get start();方法
2. selectForCount()方法,总条数小于等于0说明不需要分页,大于0说明可以分页
3. selectForList()方法,查询当前页显示的结果集
4. 把数据封装到PageResult中计算上一页,下一页,总页数
5. 两个用户传的,两个数据库查的,三个需要计算的// 使用 PageHelper 后
1. 定义QueryObject2. selectForCount()方法,不写了
3. selectForList()方法,limit之后的内容不需要写了(各个数据库分页方法不同,PageHelper支持各个数据库,底层分页)
4. PageResult不写

2 PageHelper 介绍

  PageHelper 是 MyBatis 的后端分页插件,将写好的 SQL 语句进行分页加工。无需自己去封装以及关心 SQL 分页等问题。默认情况下会使用 PageHelper 方式进行分页,如果想要实现自己的分页逻辑,可以实现 Dialect(com.github.pagehelper.Dialect) 接口,然后配置该属性为实现类的全限定名称,以下参数都是针对默认 dialect 情况下的参数。使用自定义 dialect 实现时,下面的参数没有任何作用。

1. helperDialect:分页插件会自动检测当前的数据库链接,自动选择合适的分页方式。 你可以配置helperDialect属性来指定分页插件使用哪种方言。配置时,可以使用下面的缩写值:
oracle,mysql,mariadb,sqlite,hsqldb,postgresql,db2,sqlserver,informix,h2,sqlserver2012,derby也可以实现 AbstractHelperDialect,然后配置该属性为实现类的全限定名称即可使用自定义的实现方法。2. offsetAsPageNum:默认值为 false,该参数对使用 RowBounds 作为分页参数时有效。 当该参数设置为 true 时,会将 RowBounds 中的 offset 参数当成 pageNum 使用,可以用页码和页面大小两个参数进行分页。3. rowBoundsWithCount:默认值为false,该参数对使用 RowBounds 作为分页参数时有效。 当该参数设置为true时,使用 RowBounds 分页会进行 count 查询。4. pageSizeZero:默认值为 false,当该参数设置为 true 时,如果 pageSize=0 或者 RowBounds.limit = 0 就会查询出全部的结果(相当于没有执行分页查询,但是返回结果仍然是 Page 类型)。5. reasonable:分页合理化参数,默认值为false。当该参数设置为 true 时,pageNum<=0 时会查询第一页, pageNum>pages(超过总数时),会查询最后一页。默认false 时,直接根据参数进行查询。6. params:为了支持startPage(Object params)方法,增加了该参数来配置参数映射,用于从对象中根据属性名取值, 可以配置 pageNum,pageSize,count,pageSizeZero,reasonable,不配置映射的用默认值, 默认值为pageNum=pageNum;pageSize=pageSize;count=countSql;reasonable=reasonable;pageSizeZero=pageSizeZero。7. supportMethodsArguments:支持通过 Mapper 接口参数来传递分页参数,默认值false,分页插件会从查询方法的参数值中,自动根据上面 params 配置的字段中取值,查找到合适的值时就会自动分页。 使用方法可以参考测试代码中的 com.github.pagehelper.test.basic 包下的 ArgumentsMapTestArgumentsObjTest8. autoRuntimeDialect:默认值为 false。设置为 true 时,允许在运行时根据多数据源自动识别对应方言的分页 (不支持自动选择sqlserver2012,只能使用sqlserver),用法和注意事项参考下面的场景五。9. closeConn:默认值为 true。当使用运行时动态数据源或没有设置 helperDialect 属性自动获取数据库类型时,会自动获取一个数据库连接, 通过该属性来设置是否关闭获取的这个连接,默认true关闭,设置为 false 后,不会关闭获取的连接,这个参数的设置要根据自己选择的数据源来决定。

3 导入依赖

<dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId><version>1.3.0</version>
</dependency>

4 application.properties 配置文件 – 小改

// 分页插件
// 当前页总条数为0时查询所有,(相当于没有执行分页查询,但是返回结果仍然是 Page 类型)
pagehelper.page-size-zero=true
// 合理化配置 pageNum<=0 时会查询第一页, pageNum>pages(超过总数时),会查询最后一页
pagehelper.reasonable=true

5 PageInfo对象属性

// 总条数和每页显示的数据在PageSerializable中
public class PageInfo<T> extends PageSerializable<T> {public static final int DEFAULT_NAVIGATE_PAGES = 8;//当前页private int pageNum;//每页的数量private int pageSize;//当前页的数量private int size;//由于startRow和endRow不常用,这里说个具体的用法//可以在页面中"显示startRow到endRow 共size条数据"//当前页面第一个元素在数据库中的行号private long startRow;//当前页面最后一个元素在数据库中的行号private long endRow;//总页数private int pages;//前一页private int prePage;//下一页private int nextPage;//是否为第一页private boolean isFirstPage = false;//是否为最后一页private boolean isLastPage = false;//是否有前一页private boolean hasPreviousPage = false;//是否有下一页private boolean hasNextPage = false;//导航页码数private int navigatePages;//所有导航页号private int[] navigatepageNums;//导航条上的第一页private int navigateFirstPage;//导航条上的最后一页private int navigateLastPage;......
}// 父方法
public class PageSerializable<T> implements Serializable {private static final long serialVersionUID = 1L;//总记录数protected long    total;//结果集protected List<T> list;......
}

6 使用pagehelper

  修改返回对象的类型,将原PageResult修改为Pagelnfo,可选中需修改的对象类型,通过ctrl+1组合键中的Make 'query 'return ‘com.github.pagehelper.Pagelnfo<cn.tj.domain.Department>’ 选项进行修改,同时对应的 query 方法的接口,实现类返回类型都会变成Pagelnfo

// controller层@Autowiredprivate IDepartmentService departmentService;// 处理部门查询所有方法@RequestMapping("/list")public String list(Model model, QueryObject qo){PageInfo<Department> pageInfo = departmentService.query(qo);model.addAttribute("pageInfo",pageInfo);return "department/list";}
// service接口PageInfo<Department> query(QueryObject qo);
// service实现类@Overridepublic PageInfo<Department> query(QueryObject qo) {// 用的技术是线程变量(数据共享 controller service mapper都可以用(一条线程))// 告诉PageHelper当前页 每页显示条数后 PageHelper就会将这两个数据存入线程局部变量中// 传当前页 每页显示条数PageHelper.startPage(qo.getCurrentPage(),qo.getPageSize());return new PageInfo<>(departmentMapper.selectForList(qo));}
// mapper接口
List<Department> selectForList(QueryObject qo);
// xml 将limit删掉 此时线程变量中有当前页和每页总数 底层会自动计算出起始页
// service层调用了selectForList,pagehelper底层会自动截取select 后from 前的字段替换成count(0)进行计算总页数
// 再根据不同数据库的分页技术进行分页,而分页所需的数据都在线程中存在,所以limit不需要再写了
<select id="selectForList" resultMap="BaseResultMap">select id, name, snfrom department
</select>
// 前端调用
<table class="table table-hover table-bordered table-striped"><thead><tr><th>编号</th><th>部门名称</th><th>部门编号</th><th>操作</th></tr></thead><tbody><tr th:each="department,start:${pageInfo.list}"><td th:text="${start.count}">1</td><td th:text="${department.name}">保安部</td><td th:text="${department.sn}">BA</td><td><a href="#" class="btn btn-info btn-xs btn-input"><span class="glyphicon glyphicon-pencil"></span> 编辑</a><a class="btn btn-danger btn-xs btn-delete"><span class="glyphicon glyphicon-trash"></span> 删除</a></td></tr></tbody>
</table>

7 twbs-pagination 前端分页插件

  twbs-pagination简单的自适应 Bootstrap 样式的分页插件,用于前端绘制分页相关的样式效果。
分页

<!--导入引用-->
<script src="/static/js/plugins/twbsPagination/jquery.twbsPagination.min.js"></script>
<!--编写ul-->
<ul id="pagination-demo" class="pagination-sm"></ul>
<!--编写jq 此时后台已经将总页数传递到前端了-->
$('#pagination-demo').twbsPagination({<!--总页数应通过Thymeleaf获取到后端传递的值--><!--pages是PageInfo对象中的属性-->totalPages: [[${pageInfo.pages}]],<!--显示哪一个当前页 pageNum是PageInfo对象中的属性--><!--startPage是前端插件中的属性 默认值为1-->startPage:[[${pageInfo.pageNum}]],first:'首页',prev:'上一页',next:'下一页',last:'尾页',<!--显示页数7-->visiblePages: 7,<!--当不知道传递的参数是何值时,可通过console.log(event),进行查看event是事件源对象,page是去第几页-->onPageClick: function (event, page) {<!--更改表单currentPage的value值-->$('#currentPage').val(page);<!--更改当前页的值后提交对应表单-->$('#searchForm').submit();}});
http://www.yayakq.cn/news/315622/

相关文章:

  • python网站和js做网站佛山新网站建设代理商
  • 网站宝 添加二级域名百度搜索引擎seo
  • 私家网站ip地址大全杭州做网站外包公司有哪些
  • 怎么样做网站推广盐城市网站
  • wordpress跨站脚本攻击漏洞门户网站的传播特点
  • 做百度推广网站多少钱网页设计教程 模仿
  • 中国建设部官方网站展厅设计服务商
  • 西安做网站的公司有哪些建一个营销网站多少钱
  • 佛山外贸网站建设价位山西省消防总队建设工程备案网站
  • 我想弄个自己的卖货网站怎样做wordpress免费主题怎么用
  • 深圳做律师网站公司模板网站与定制网站的区别
  • 网站流量是怎么赚钱的企业网络推广计划书
  • 设计师喜欢的几个网站代理网游要多少钱
  • 公司一个人做网站外贸简单网站建设
  • 如何用模版做网站网络营销成功的品牌
  • 临沂广润网站建设无锡网站营销公司哪家好
  • 网站建设2000元asp网站后台无法编辑
  • 自媒体135网站安徽网络推广排名
  • 网站icp备案信息如何查询北京网站的建立
  • 做直播信号网站内蒙古住房与城乡建设部网站
  • 深圳市专注网站建设服装网站目标
  • 个人电台网站模版华为云服务器怎么建设网站
  • 做效果图的网站有哪些软件有哪些长沙专业做网站排名
  • 建筑工程找活网站建网站找谁
  • 免费建站的网站有哪些宁波网站推广软件哪家强
  • 如何链接自己做的网站网站彩铃怎么做的
  • 遵义网站建设托管公司推广新产品最好的方法
  • 深圳手机商城网站设计制作零食进货渠道网
  • 有哪些可以做网站的平台企业建立一个网站如何租用域名
  • 做网站的备案怎么识别一个网站