有小伙伴找我要个 thymeleaf 的 demo,说自己集成的总是报错,所以就有了这篇…

关于什么是 thymeleaf 我就不赘述了,相信搜到这篇的大部分是奔着如何集成来的。

本文源码先附上:https://gitee.com/niceyoo/springboot-thymeleaf-demo

懒得看下文的可直接跳转至源码。下面把一些主要的配置粘一下,不做额外赘述,大部分可以在上方源码中获取,尤其是前端部分。

1、本文环境

  • IDEA,2021.2
  • JDK,8
  • SpringBoot,2.4.4
  • MybatisPlus,3.1.1
  • Thymeleaf,2.4.4
  • layui,2.5.6

2、依赖环境(pom.xml)

直接用的 spring-boot-starter-parent,不了解的可以看下这篇文章: https://www.cnblogs.com/niceyoo/p/10960207.html

主要依赖有:druid连接池、mybatisplus、mysql驱动、thymeleaf依赖。

<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.4.4</version><relativePath/> <!-- lookup parent from repository -->
</parent><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><!--web--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--新增durid监控--><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.23</version></dependency><!--Mybatis-plus--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus</artifactId><version>3.1.1</version></dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.1.1</version></dependency><!-- mysql --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.22</version></dependency><!--thymeleaf--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency>
</dependencies>

3、配置文件(application.yaml)

主要定义了 数据库、thymeleaf、mybatisplus配置。

server:port: 8089spring:datasource:url: jdbc:mysql://127.0.0.1:3306/thymeleaf-db?useUnicode=true&characterEncoding=UTF-8&useSSL=falseusername: rootpassword: 123456type: com.alibaba.druid.pool.DruidDataSourcedriver-class-name: com.mysql.jdbc.Driverthymeleaf:#模板的模式,支持 HTML, XML TEXT JAVASCRIPTmode: HTML5#编码 可不用配置encoding: UTF-8#内容类别,可不用配置content-type: text/html#开发配置为false,避免修改模板还要重启服务器cache: false#配置模板路径,默认是templates,可以不用配置prefix: classpath:/templatessuffix: .htmlmybatis-plus:typeAliasesPackage: com.thymeleaf.demo.com.thymeleaf.demo.entityconfiguration:map-underscore-to-camel-case: truecache-enabled: truelazyLoadingEnabled: truemultipleResultSetsEnabled: true#这个配置会将执行的sql打印出来,在开发或测试的时候可以用log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

用到的SQL:

CREATE TABLE `user` (`id` int(11) NOT NULL AUTO_INCREMENT,`user_name` varchar(32) DEFAULT NULL,`age` int(11) DEFAULT NULL,`nick_name` varchar(64) DEFAULT NULL,`create_time` datetime DEFAULT CURRENT_TIMESTAMP,PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8;

4、MyBatisPlus配置类(可忽略)

mybatisplus配置类,设置扫描包、加入分页插件。在 mybatisplus 3.4版本之后 PaginationInterceptor 弃用了,改用 MybatisPlusInterceptor,不了解的可自行搜索。至于为什么要使用自定义分页插件可参考方法注释解释。

@EnableTransactionManagement
@Configuration
@MapperScan("com.thymeleaf.demo.dao")
public class MyBatisPlus {/*** myabtis 实现的分页为什么还要分页插件?* <p>* 1.mybatis实现得分页时逻辑分页或者叫做内存不是物理分页* 2.他是把符合条件的数据全部查询出来放到内存中,然后返回你需要的那部分* 3.表中数据不多时,可以使用,速度慢一些;当数据量大时,建议使用物理分页*/@Beanpublic PaginationInterceptor paginationInterceptor() {return new PaginationInterceptor();}}

5、控制层(UserController)

如下写了个增删改查的实例,没有按照代码规范来,大致看一下即可。

其中返回 ModelAndView 的方法是用来映射对应的前端页面的,返回 R 的方法是接口返回形式。其中 R 是 mybatisplus 中提供的一个返回给前端信息的工具类,为了方便直接拿来用了。

@RestController
@RequestMapping("user")
public class UserController extends ApiController {/*** 服务对象*/@Resourceprivate UserService userService;/*** 用户列表展示** @return* @throws NoSuchAlgorithmException*/@GetMapping("view")public ModelAndView view(){return new ModelAndView("/user").addObject("modelName","用户管理模块");}/*** 新增用户** @param user 用户实体* @return 新增结果*/@PostMapping("insert")public R insert(@RequestBody User user){Assert.notNull(user,"user不能为空");return success(userService.save(user));}/*** 修改用户** @param user 用户实体* @return 修改结果*/@PostMapping("update")public R update(@RequestBody User user){Assert.notNull(user,"user不能为空");return success(userService.saveOrUpdate(user));}/*** 删除用户** @param ids 用户ids* @return 删除结果*/@PostMapping("delete")public R delete(@RequestParam List<String> ids){Assert.notNull(ids,"ids不能为空");return success(userService.removeByIds(ids));}/*** 查询用户数据 - 分页** @param current 当前页* @param size 页码大小* @return 分页数据列表*/@GetMapping("selectAll")public R selectAll(@RequestParam Integer current, @RequestParam Integer size, @RequestParam(required = false) String userName){QueryWrapper<User> queryWrapper = new QueryWrapper<>();if(StringUtils.hasText(userName)){queryWrapper.like("user_name", userName);}Page<User> page = new Page<User>(current,size);IPage<User> result = userService.page(page, queryWrapper);return success(result);}
}

6、service服务层

服务层就比较简单了,直接用的 mybatisplus 的 IService,这个类中实现了大部分方法。直接拿来集成就好了,代码都不用写。

public interface UserService extends IService<User> {}@Service("userService")
public class UserServiceImpl extends ServiceImpl<UserDao, User> implements UserService {}

一个接口,一个实现,没写一点代码。

7、前端界面

前端界面用的 layui,全部代码就不粘贴了,说一下 Thymeleaf 吧,主要是头部需要声明,结构如下:

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org"><head><meta charset="UTF-8"><title>测试</title><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"><link rel="stylesheet" type="text/css" th:href="@{/plugins/layui/css/layui.css}"/></head><body><div>测试</div></body>
</html>

本文源码:https://gitee.com/niceyoo/springboot-thymeleaf-demo

SpringBoot集成thymeleaf增删改查示例相关推荐

  1. Spring Boot (十五): Spring Boot + Jpa + Thymeleaf 增删改查示例

    <p>这篇文章介绍如何使用 Jpa 和 Thymeleaf 做一个增删改查的示例.</p> 先和大家聊聊我为什么喜欢写这种脚手架的项目,在我学习一门新技术的时候,总是想快速的搭 ...

  2. (转)Spring Boot (十五): Spring Boot + Jpa + Thymeleaf 增删改查示例

    http://www.ityouknow.com/springboot/2017/09/23/spring-boot-jpa-thymeleaf-curd.html 这篇文章介绍如何使用 Jpa 和 ...

  3. SpringBoot+mybatis+postgreSQL+thymeleaf增删改查

    本篇是用SpringBoot搭建一个增删改查的demo,编辑器是idea,适合初学者学习.源码在GitHub上,https://github.com/jiangttian/springboot/tre ...

  4. SpringBoot+MyBatisPlus+Vue增删改查

    SpringBoot+MyBatisPlus+Vue增删改查 建议在写之前会熟练使用vue脚手架,以及掌握vue相关知识 本文章会教你构建一个springboot+mybatisplus+vue 的增 ...

  5. js操作indexedDB增删改查示例

    js操作indexedDB增删改查示例 if ('indexedDB' in window) {// 如果数据库不存在则创建,如果存在但是version更大,会自动升级不会复制原来的版本var req ...

  6. ASP.NET Web——GridView完整增删改查示例(全篇幅包含sql脚本)大二结业考试必备技能

    ASP.NET Web--GridView 完整增删改查示例(全篇幅包含sql脚本)大二结业考试必备技能 环境说明 系统要求:win7/10/11 开发语言:C# 开发工具:Visual Studio ...

  7. spring boot(十五)spring boot+thymeleaf+jpa增删改查示例

    快速上手 配置文件 pom包配置 pom包里面添加jpa和thymeleaf的相关包引用 <dependency><groupId>org.springframework.bo ...

  8. springboot的基本增删改查

    springboot增删改查 1.根据表中的字段创建实体类UserInfo.java 2.编写MybatisController.java 3.在postman中访问接口(先启动项目) 3-1.增 3 ...

  9. 进入全屏 nodejs+express+mysql实现restful风格的增删改查示例

    首先,放上项目github地址:https://github.com/codethereforam/express-mysql-demo 一.前言 之前学的java,一直用的ssm框架写后台.前段时间 ...

最新文章

  1. 4. 连续时间鞅(REN)
  2. 标准化Keras:TensorFlow 2.0中的高级API指南
  3. Windows 网卡配置多VLAN
  4. html5动画是什么,10个HTML5动画 让你忘掉Flash是啥(组图)
  5. Form.php 日期表单,Bootstrap日期和时间表单组件使用方法
  6. html5滑动删除置顶,html5向左滑动删除特效
  7. java 多线程——一个定时调度的例子
  8. 可方向导不一定连续的例子
  9. a as as big rat_12句英语绕口令,你能一口气读完几句?
  10. 各种学习网址总结-程序猿值得拥有 持更
  11. poj 3268 Silver Cow Party(最短路dijkstra)
  12. 浅析企业上下级沟通的障碍及对策
  13. 牛客 打气球的最大分数
  14. rancher部署安装好后,无法部署pod
  15. 台式计算机睡眠了怎么唤醒,分享大家几种电脑深度睡眠怎么唤醒方法
  16. ip解析经纬度,基站定位经纬度,用就完事了
  17. Linux中source filename .(点)filename ./filename sh filename的区别
  18. 学情分析场景解读,助力教育机构提升课程质量和学员学习效果
  19. PMOS管经典开关电路-PMOS开关典型电路工作原理及分析-KIA MOS管
  20. SQL Server简介

热门文章

  1. 前端学习(2670): vue3.0实战开始建立新项目功能清单
  2. plsql轻量版游标的使用
  3. 前端学习(1392):多人管理项目12加密
  4. 第一百五十一期:最新计算机技能需求排名出炉:Python仅排第三,第一你猜得到吗?
  5. 电脑SSH登陆树莓派Raspberry的两种方式
  6. connect函数在阻塞和非阻塞模式下的行为
  7. mysql主键long_MySQL主键设计
  8. python中cumsum_在python里“np.cumsum”这个命令是干什么的?怎么使用?
  9. android menu菜单 实现点击后不消失_教你修改Windows万年不变的黄色文件夹,让文件也不枯燥...
  10. jQuery异步加载数据并添加事件示例