写点什么

springboot 整合 thymeleaf,java 技术核心卷二

用户头像
极客good
关注
发布于: 刚刚

搭建个人博客界面


=======================================================================


下面我们就搭建一个 demo 吧,整合 mybatis ,将文章列表显示在界面上,实现整合 pageHelper 实现分页效果。在界面上显示上一页下一页。


1、创建表。sql 如下:


create DATABASE blog_system


DROP TABLE IF EXISTS t_article;


CREATE TABLE t_article (


id int(11) NOT NULL AUTO_INCREMENT,


title varchar(50) NOT NULL COMMENT '文章标题',


content longtext COMMENT '文章具体内容',


created date NOT NULL COMMENT '发表时间',


modified date DEFAULT NULL COMMENT '修改时间',


categories varchar(200) DEFAULT '默认分类' COMMENT '文章分类',


tags varchar(200) DEFAULT NULL COMMENT '文章标签',


allow_comment tinyint(1) NOT NULL DEFAULT '1' COMMENT '是否允许评论',


thumbnail varchar(200) DEFAULT NULL COMMENT '文章缩略图',


PRIMARY KEY (id)


) ENGINE=InnoDB DEFAULT CHARSET=utf8;




-- Records of t_article




INSERT INTO t_article VALUES ('1', '2019 新版 Java 学习路线图','Java 学习路线图具体内容具体内容具体内容具体内容具体内容具体内容具体内容','2019-10-10', null, '默认分类', '‘2019,Java,学习路线图', '1', null);


INSERT INTO t_article VALUES ('2', '2019 新版 Python 学习线路图','据悉,Python 已经入驻小学生教材,未来不学 Python 不仅知识会脱节,可能与小朋友都没有了共同话题~~所以,从今天起不要再找借口,不要再说想学 Python 却没有资源,赶快行动起来,Python 等你来探索' ,'2019-10-10', null, '默认分类', '‘2019,Java,学习路线图', '1', null);


INSERT INTO t_article VALUES ('3', 'JDK 8——Lambda 表达式介绍','?Lambda 表达式是 JDK 8 中一个重要的新特性,它使用一个清晰简洁的表达式来表达一个接口,同时 Lambda 表达式也简化了对集合以及数组数据的遍历、过滤和提取等操作。下面,本篇文章就对 Lambda 表达式进行简要介绍,并进行演示说明' ,'2019-10-10', null, '默认分类', '‘2019,Java,学习路线图', '1', null);


INSERT INTO t_article VALUES ('4', '函数式接口','虽然 Lambda 表达式可以实现匿名内部类的功能,但在使用时却有一个局限,即接口中有且只有一个抽象方法时才能使用 Lamdba 表达式代替匿名内部类。这是因为 Lamdba 表达式是基于函数式接口实现的,所谓函数式接口是指有且仅有一个抽象方法的接口,Lambda 表达式就是 Java 中函数式编程的体现,只有确保接口中有且仅有一个抽象方法,Lambda 表达式才能顺利地推导出所实现的这个接口中的方法' ,'2019-10-10', null, '默认分类', '‘2019,Java,学习路线图', '1', null);


INSERT INTO t_article VALUES ('5', '虚拟化容器技术——Docker 运行机制介绍','Docker 是一个开源的应用容器引擎,它基于 go 语言开发,并遵从 Apache2.0 开源协议。使用 Docker 可以让开发者封装他们的应用以及依赖包到一个可移植的容器中,然后发布到任意的 Linux 机器上,也可以实现虚拟化。Docker 容器完全使用沙箱机制,相互之间不会有任何接口,这保证了容器之间的安全性' ,'2019-10-10', null, '默认分类', '‘2019,Java,学习路线图', '1', null);


2、创建 springboot 项目,引入依赖如下:


<dependency>


<groupId>org.springframework.boot</groupId>


<artifactId>spring-boot-starter-thymeleaf</artifactId>


</dependency>


<dependency>


<groupId>org.springframework.boot</groupId>


<artifactId>spring-boot-starter-web</artifactId>


</dependency>


<dependency>


<groupId>org.mybatis.spring.boot</groupId>


<artifactId>mybatis-spring-boot-starter</artifactId>


<version>2.1.3</version>


</dependency>


<dependency>


<groupId>mysql</groupId>


<artifactId>mysql-connector-java</artifactId>


<scope>runtime</scope>


</dependency>


<dependency>


<groupId>org.springframework.boot</groupId>


<artifactId>spring-boot-starter-test</artifactId>


<scope>test</scope>


<exclusions>


<exclusion>


<groupId>org.junit.vintage</groupId>


<artifactId>junit-vintage-engine</artifactId>


</exclusion>


</exclusions>


</dependency>


<dependency>


<groupId>com.github.pagehelper</groupId>


<artifactId>pagehelper</artifactId>


<version>5.1.2</version>


</dependency>


<dependency>


<groupId>com.github.pagehelper</groupId>


<artifactId>pagehelper-spring-boot-autoconfigure</artifactId>


<version>1.2.3</version>


【一线大厂Java面试题解析+核心总结学习笔记+最新架构讲解视频+实战项目源码讲义】
浏览器打开:qq.cn.hn/FTf 免费领取
复制代码


</dependency>


<dependency>


<groupId>com.github.pagehelper</groupId>


<artifactId>pagehelper-spring-boot-starter</artifactId>


<version>1.2.3</version>


</dependency>


3、创建实体类。


public class Article {


private Integer id;


private String title;


private String content;


private Date created;


private Date modified;


private String categories;


private String tags;


private Integer allowComment;


private String thumbnail;


getter()/setter()


}


5、创建 mapper 接口


@Mapper


public interface ArticleMapper {


List<Article> selectList();


}


6、创建 mapper 对应的 xml 文件


<?xml version="1.0" encoding="UTF-8" ?>


<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"


"http://mybatis.org/dtd/mybatis-3-mapper.dtd">


<mapper namespace="cn.quellanan.springboothomework.mapper.ArticleMapper">


<select id="selectList" resultType="article">


select * from tb_article


</select>


</mapper>


7、创建 service 以及实现类。使用 PageHelper 实现分页


public interface ArticleService {


List<Article> selectList(int index,int size);


}


@Service


public class ArticleServiceImpl implements ArticleService {


@Autowired


private ArticleMapper articleMapper;


@Override


public List<Article> selectList(int index,int size) {


PageHelper.startPage(index,size);


List<Article> articles = articleMapper.selectList();


return articles;


}


}


8、创建 controller 层接口


@Controller


public class ArticleController {


@Autowired


private ArticleService articleService;


@RequestMapping("/")


public String list(Model model, @RequestParam(required = false)Integer index, @RequestParam(required = false)Integer size){


if(index==null ||size==null){


index=1;


size=2;


}


List<Article> articles = articleService.selectList(index,size);


PageInfo<Article> pageInfo=new PageInfo<>(articles);


model.addAttribute("articles", articles);


model.addAttribute("pageInfo", pageInfo);


return "client/index";


}


}


9、配置文件中增加配置。

Mysql 数据库连接配置 : com.mysql.cj.jdbc.Driver

spring.datasource.url=jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC&characterEncoding=utf8&useUnicode=true&useSSL=false


spring.datasource.username=root


spring.datasource.password=123456


#开启驼峰命名匹配映射 mapper


mybatis.configuration.map-underscore-to-camel-case=true


#配置 mybatis 的 xml 映射配置文件路径


mybatis.mapper-locations=classpath:mapper/*.xml


#配置 mybatis 映射配置文件中实体类别名


mybatis.type-aliases-package=cn.quellanan.springboothomework.pojo

thymeleaf 页面缓存设置

spring.thymeleaf.cache=false

配置 pagehelper 参数

pagehelper.helperDialect=mysql


pagehelper.reasonable=true


pagehelper.supportMethodsArguments=true


pagehelper.params=count=countSql


10、引入静态文件资源。


11、编辑 index.html 文件。


<!DOCTYPE html>


<html lang="en" xmlns:th="http://www.thymeleaf.org">


<div th:replace="/client/header::header(null,null)" />


<body>


<div class="am-g am-g-fixed blog-fixed index-page">


<div class="am-u-md-8 am-u-sm-12">


<div th:each="article,stat:${articles}" th:value="article">


<article class="am-g blog-entry-article">


<div class="am-u-lg-6 am-u-md-12 am-u-sm-12 blog-entry-text">


<span class="blog-color"style="font-size: 15px;"><a>默认分类</a></span>


<span>   </span>


<span style="font-size: 15px;" th:text="'发布于 '+ ${article.created}" />


<h2>


<div><a style="color: #0f9ae0;font-size: 20px;" th:text="${article.title}" />


</div>


</h2>


<div style="font-size: 16px;" th:text="${article.content}" />


</div>


</article>


</div>


<div>


<a class="btn btn-sm" th:href="@{/(index=1,size=2)}">首页</a>


<a class="btn btn-sm" th:href="@{/(index=${pageInfo.getPageNum()-1},size=2)}">上一页</a>


<a class="btn btn-sm" th:href="@{/(index=${pageInfo.getPageNum()}+1,size=2)}">下一页</a>


<a class="btn btn-sm" th:href="@{/(index=${pageInfo.getPages()},size=2)}">尾页</a>


</div>


</div>


<div class="am-u-md-4 am-u-sm-12 blog-sidebar">


<div class="blog-sidebar-widget blog-bor">


<h2 class="blog-text-center blog-title"><span>子慕</span></h2>


<img th:src="@{/assets/img/me.jpg}" alt="about me" class="blog-entry-img"/>


<p>


Java 后台开发

用户头像

极客good

关注

还未添加个人签名 2021.03.18 加入

还未添加个人简介

评论

发布
暂无评论
springboot 整合 thymeleaf,java技术核心卷二