springboot用thymeleaf模板的paginate分页
本文根据一个简单的user表为例,展示 springboot集成mybatis,再到前端分页完整代码;
先看java部分
pom.xml 加入
<!--支持 Web 应用开发,包含 Tomcat 和 spring-mvc。 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!--模板引擎-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency> <!--Mybatis-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.2.</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.2.</version>
</dependency>
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.</version>
</dependency>
<!-- mybatis pagehelper -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>3.6.</version>
</dependency>
<!--Mysql / DataSource-->
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-jdbc</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!--springboot 集成Mybatis所需jar配置 end-->
application.properties文件
spring.datasource.platform=mysql
spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driverClassName=com.mysql.jdbc.Driver
# Advanced configuration...
spring.datasource.max-active=
spring.datasource.max-idle=
spring.datasource.min-idle=
spring.datasource.initial-size= #create table
spring.jpa.hibernate.ddl-auto=validate spring.thymeleaf.prefix=classpath:/templates/
spring.thymeleaf.suffix=.html
spring.thymeleaf.mode=HTML5
spring.thymeleaf.encoding=UTF-
spring.thymeleaf.content-type=text/html
spring.thymeleaf.cache=false
启动类 Application.java
@SpringBootApplication
@MapperScan("com.boot.mapper")
public class Application {
//定义一个全局的记录器,通过LoggerFactory获取
private final static Logger logger = LoggerFactory.getLogger(Application.class); //----------------------------mybaits配置start-------------------------------------------
//DataSource
@Bean
@ConfigurationProperties(prefix="spring.datasource")
public DataSource dataSource() {
return new org.apache.tomcat.jdbc.pool.DataSource();
}
//SqlSessionFactory
@Bean
public SqlSessionFactory sqlSessionFactoryBean() throws Exception { SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
sqlSessionFactoryBean.setDataSource(dataSource()); PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver(); sqlSessionFactoryBean.setMapperLocations(resolver.getResources("classpath:mapper/*.xml")); return sqlSessionFactoryBean.getObject();
}
@Bean
public PlatformTransactionManager transactionManager() {
return new DataSourceTransactionManager(dataSource());
}
//------------------------------mybaits配置end---------------------------------
public static void main(String[] args){
System.out.println("Hello World!");
SpringApplication.run(Application.class, args);
}
}
以一个简单的user对象为例
private Integer id; private String name; private String password;
controller层
@RestController
public class UserController {
@Autowired
UserService uSer;
@RequestMapping("userlist")
public Object userlist(@RequestParam(value="pageon",defaultValue="")int pageon
,ModelAndView mv){
mv.addAllObjects(uSer.UserList(pageon));
mv.setViewName("userlist");
return mv;
}
}
service层
public Map<String, Object> UserList(int pageon) {
// TODO Auto-generated method stub
Map<String,Object> map=new HashMap<String, Object>();
Page page=new Page(pageon);
page.setRowcountAndCompute(userMapper.selectPageListCount(null));
map.put("page", page);
map.put("list", userMapper.selectPageList(map));
return map;
}
UserMapper.xml
<select id="selectPageList" parameterType="java.util.Map" resultMap="BaseResultMap" >
select id, name, password from user order by id limit #{page.start},#{page.row}
</select>
<select id="selectPageListCount" parameterType="java.util.Map" resultType="int" >
select count() from user
</select>
到此时后台代码结束
附加个page工具类
package com.boot.utils; import java.io.Serializable; public class Page implements Serializable { /**
*
*/
private static final long serialVersionUID = 1L;
public int getPageon() {
return pageon;
} public void setPageon(int pageon) {
this.pageon = pageon;
} public int getRowcount() {
return rowcount;
} public void setRowcount(int rowcount) {
this.rowcount = rowcount;
} public int getPagecount() {
return pagecount;
} public void setPagecount(int pagecount) {
this.pagecount = pagecount;
} public int getRow() {
return row;
} public void setRow(int row) {
this.row = row;
} public Page(int pageon, int row, int rowcount) {
pageNumber = ;
this.pageon = pageon;
this.row = row;
this.rowcount = rowcount;
compute();
} public Page(int pageon, int row) {
pageNumber = ;
this.pageon = pageon;
this.row = row;
}
public Page(int pageon) {
pageNumber = ;
this.pageon = pageon;
} public Page() {
pageNumber = ;
} public int getPageNumber() {
return pageNumber;
} public void setPageNumber(int pageNumber) {
this.pageNumber = pageNumber;
} public void compute() {
if (rowcount <= )
return;
if (row <= )
row = ;
pagecount = rowcount % row != ? rowcount / row + : rowcount / row;
if (pageon > pagecount)
pageon = pagecount;
if (pageon < )
pageon = ;
start = (pageon - ) * row;
end = pageon * row;
if (end > rowcount)
end = rowcount;
} public int getStart() {
return start;
} public void setStart(int start) {
this.start = start;
} public int getEnd() {
return end;
} public void setEnd(int end) {
this.end = end;
} public void setRowcountAndCompute(int rowcount) {
this.rowcount = rowcount;
compute();
} protected int pageon;
protected int rowcount;
protected int pagecount;
protected int row;
protected int start;
protected int end;
protected int pageNumber;
}
前端代码开始
statis目录下加入如下几个文件
在templates目录下建立一个前端分页工具页面 page.html,(虽然代码不多,封装这点东西花费我半天时间!!)
<!DOCTYPE html >
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:th="http://www.thymeleaf.org">
<div th:fragment="page">
<div id="page"></div>
<link rel="stylesheet" th:href="@{/css/style.css}" />
<script type="text/javascript" th:src="@{/js/page.js}"></script>
<script th:inline="javascript">/*<![CDATA[*/
var size=[[${page.pagecount}]];
if(size>)
Pagination.Init(document.getElementById('page'), {
size: size, // pages size
page: [[${page.pageon}]], // selected page
step: // pages before and after current
});
/*]]>*/
function back(page_index){
/*<![CDATA[*/
if([[${page.pageon}]]==page_index)
return;
var url=document.getElementById('page').parentNode.getAttribute('url');var tourl;
if(url.indexOf('?')>)
tourl=url+'&pageon='+page_index;
else
tourl=url+'?pageon='+page_index;
window.location.href=tourl;
/*]]>*/
}
</script>
</div>
</html>
创建userlist.html
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8"/>
<title>用户列表</title> </head>
<body>
<div style="width: 1000px;" >
<table style="border-width: 1px;border-style: dashed;">
<tr>
<td>ID</td>
<td>姓名</td>
<td>密码</td>
</tr>
<tr th:each="user:${list}">
<td th:text="${user.id}">ID</td>
<td th:text="${user.name}">姓名</td>
<td th:text="${user.password}">密码</td>
</tr>
</table>
<div th:include="page :: page" url="/userlist"></div>
</div> </body>
</html>
可以看到 引用分页的代码 只有一句,是不是很好用
<div th:include="page :: page" url="/userlist"></div>
分页效果图
谢谢观看
下载插件连接 (有两个插件 一个是滚动显示,一个类似 博客园分页)
http://files.cnblogs.com/files/changhai/%E5%88%86%E9%A1%B5%E6%8F%92%E4%BB%B6.zip
springboot用thymeleaf模板的paginate分页的更多相关文章
- SpringBoot 之Thymeleaf模板.
一.前言 Thymeleaf 的出现是为了取代 JSP,虽然 JSP 存在了很长时间,并在 Java Web 开发中无处不在,但是它也存在一些缺陷: 1.JSP 最明显的问题在于它看起来像HTML或X ...
- springboot整合Thymeleaf模板引擎
引入依赖 需要引入Spring Boot的Thymeleaf启动器依赖. <dependency> <groupId>org.springframework.boot</ ...
- Springboot整合thymeleaf模板
Thymeleaf是个XML/XHTML/HTML5模板引擎,可以用于Web与非Web应用. Thymeleaf的主要目标在于提供一种可被浏览器正确显示的.格式良好的模板创建方式,因此也可以用作静态建 ...
- (二)springboot整合thymeleaf模板
在我们平时的开发中,用了很久的jsp作view显示层,但是标签库和JSP缺乏良好格式的一个副作用就是它很少能够与其产生的HTML类似.所以,在Web浏览器或HTML编辑器中查看未经渲染的JSP模板是非 ...
- 【Springboot】Springboot整合Thymeleaf模板引擎
Thymeleaf Thymeleaf是跟Velocity.FreeMarker类似的模板引擎,它可以完全替代JSP,相较与其他的模板引擎,它主要有以下几个特点: 1. Thymeleaf在有网络和无 ...
- SpringBoot系列——Thymeleaf模板
前言 thymeleaf是springboot官方推荐使用的java模板引擎,在springboot的参考指南里的第28.1.10 Template Engines中介绍并推荐使用thymeleaf, ...
- SpringBoot使用thymeleaf模板引擎
(1).添加pom依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactI ...
- springboot 引入 thymeleaf 模板
第一步pom中: <!-- 引入 thymeleaf 模板依赖 --> <dependency> <groupId>org.springframework.boot ...
- SpringBoot日记——Thymeleaf模板引擎篇
开发通常我们都会使用模板引擎,比如:JSP.Velocity.Freemarker.Thymeleaf等等很多,那么模板引擎是干嘛用的? 模板引擎,顾名思义,是一款模板,模板中可以动态的写入一些参数, ...
随机推荐
- ZooKeeper源码分析-Jute-第一部分
Hadoop record I/O 包含class文件以及record描述语言解释器用于简化records的序列化和反序列化. 介绍 任何显著复杂性的软件系统都需要与外界进行数据交换的机制.数据交互通 ...
- 在项目中利用TX Text Control进行WORD文档的编辑显示处理
在很多文档管理的功能模块里面,我们往往需要对WORD稳定进行展示.编辑等处理,而如果使用微软word控件进行处理,需要安装WORD组件,而且接口使用也不见得简单易用,因此如果有第三方且不用安装Offi ...
- 关于 asp.net 点击确定按钮 获取不到新值问题
点击事件内,可以使用request.form[" kk"] 获取到值,但是this.txt.Text 确实旧值, 尼玛,居然没加isPostBack重新加载了数据 ,request ...
- R语言重要数据集分析研究——R语言数据集的字段含义
R语言数据集的字段含义 作者:马文敏 选择一种数据结构来储存数据 将数据输入或导入到这个数据结构中 数据集的概念 数据集通常是有数据结构的一个矩形数组,行表示规则,列表示变量. 不同的行业对数据集的行 ...
- Java常用类String的面试题汇总
比较两个字符串时使用"=="还是equals()方法? 当然是equals方法."=="测试的是两个对象的引用是否相同,而equals()比较的是两个字符串的值 ...
- hibernate in List查询条件 sum求和使用参考
@Override public Integer getSumZongShuByidList(List<String> idList){ Integer zongshu = 0; Stri ...
- laydate时间插件更换皮肤
<script> ;!function(){ laydate.skin('molv'); laydate({ elem: '#demo' }) }();</script>
- nuget挂了吗?
[nuget.org] Unable to load the service index for source https://api.nuget.org/v3/index.json. 发送请求时出错 ...
- Linux实战教学笔记13:定时任务补充
第十三节 定时任务补充 标签(空格分隔): Linux实战教学笔记 ---[更多资料点我查看][1] 1,生产环境常用Crontab专业实例 1.1书写crontab定时任务多个基本要领 1.1.1 ...
- Java基础(1) - 语法 & 概念
Java基础语法 基础 1. Java对大小写敏感 2. Java注释 //单行注释 这是一行注释 /* 这里是多行 注释 */ /** 这里是文档注释 @author 0o晓月メ */ 3. 访问修 ...