文章目录

  • 前言
    • 如何使用模板Thymeleaf来自动生成java代码
      • 01 Thymeleaf 是什么?
      • 02 Thymeleaf与springBoot的集成即使用
      • 03 如何使用模板Thymeleaf来自动生成java代码
        • 03::01 变量替换、和if判断
        • 03::02 for循环

前言

  如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊,写作不易啊^ _ ^。
  而且听说点赞的人每天的运气都不会太差,实在白嫖的话,那欢迎常来啊!!!


如何使用模板Thymeleaf来自动生成java代码

 最近有点累,写个博文聊聊天,感觉已经很久没有静下心写一篇博文了,絮絮叨叨的别烦我就行,
看这标题是不是感觉有点奇怪,因为自动生成这种组件业界已经有很完善的技术方案了,为什么还要自己写呢,其实我想写这篇文章的起因是这样的,有一轮面试,在面试过程中,我得知了他们并没有用mybatis,而是自己写了一套出来。
 等我回去了我就在想,如果没有自动生成,那有些公有的东西还要手写会不会很麻烦,既然有了兴趣那我就随机查些资料,自己尝试着写了一个小demo,这就是这篇文章的由来。

01 Thymeleaf 是什么?

官方话是这样的:

Thyme leaf 是一个表现层的模板引擎, 一般被使用在 Web 环境 中,它可以处理 HTML, XML、 JS 等文档,简单来说,它可以将 JSP 作为 Java Web 应用的表现层,有能力展示与处理数据。Thyme leaf 可以让表现层的界面节点与程序逻辑被共享,这样的设计, 可以让 界面设计人员、业务人员与技术人员都参与到项目开发中。

它的官网是:https://www.thymeleaf.org/
下面是他的文档:

感兴趣的话可以点进去看看,不过这不是今天的重点,就稍微带一下就可以了。

那么说使用Thymeleaf 的好处是什么,我个人感觉它最大的好处就是跟springBoot兼容比较好,
不像freemarker。

02 Thymeleaf与springBoot的集成即使用

这也不是我今天想说的话题,我就简单带过一下。
首先建立一个springBoot
添加依赖:

    <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency><dependency><groupId>ognl</groupId><artifactId>ognl</artifactId><version>3.2.10</version></dependency>

这样就可以了,这里说一下如果你的项目不是springBoot怎么办?
引用下面的依赖就可以:

   <dependency><groupId>org.thymeleaf</groupId><artifactId>thymeleaf</artifactId><version>3.0.9.RELEASE</version></dependency>

感兴趣的可以自己玩一下。

说回正事,application.yml配置

server:port: 13145  # 默认端口tomcat:uri-encoding: UTF-8
spring:application:name: ThymeleafDemo # 项目名称thymeleaf:model: HTML #模板模式、默认为HTML5prefix: classpath:/thymeleaf/  #模板前缀suffix: .html #模板后缀 默认为.htmlcache: false #是否打开模板配置 、默认为true

看着这个部分了吗

prefix: classpath:/thymeleaf/ #模板前缀

我先在这个文件下面建一个main.html

内容:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
变量模板:<input type='text' th:value="'学生-'+${name}"></body>
</html>

这里我就简单说一下集成,就不详细的说一下Thymeleaf的语法,毕竟这不是今天的重点。
建立一个controller

/**
* @description: TODO
* @author 杨镇宇
* @date 2022/4/7 23:30
* @version 1.0
*/
@Controller
public class HtmlThymeleafController {@RequestMapping("/hello")public String hello(Model model){model.addAttribute("name","age");return "main";}}

在这里因为我们已经在application.yml中配置了模板的前缀和后缀,并且模式选为HTML

model: HTML #模板模式、默认为HTML5
prefix: classpath:/thymeleaf/ #模板前缀
suffix: .html #模板后缀 默认为.html

因此我们只要 return 文件名就可以了,即main

启动项目、测试一下

ok!!! 集成成功。

03 如何使用模板Thymeleaf来自动生成java代码

重点来了,这是我今天想要讲的东西。
因为Thymeleaf其实对非前端页面其实不是很友好,但是不是不能做,我们用下面这个:

看到了吗,我们可以使用TEXT模式。
感兴趣的小伙伴可以自己阅读一下,通过我上面介绍的进入doc的方式或者直接访问下面的链接都可以。
https://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html#textual-syntax
下面是例子

03::01 变量替换、和if判断

准备模板文件

import org.springframework.context.annotation.Primary;[# th:if="${flag}"]@Primary[/]
private String [(${name})] ;

下面是我写的一个单元测试,我们来看一下:

/*** if 语法* */@Testpublic void test_thymeleaf_02(){//模板引擎TemplateEngine engine = new TemplateEngine();//读取磁盘中的模板文件ClassLoaderTemplateResolver resolver = new ClassLoaderTemplateResolver();//路径resolver.setPrefix("thymeleaf/");//后缀resolver.setSuffix(".java");//设置模板模式、默认是HTMLresolver.setTemplateMode("TEXT");//设置引擎使用 resolveengine.setTemplateResolver(resolver);//准备数据 使用contextContext context = new Context();//添加基本类型context.setVariable("name","yangzhenyu");context.setVariable("flag",true);String out = engine.process("IF_TEST",context);System.out.printf(out);}

执行一下,看看结果:

03::02 for循环

同样准备模板文件

文件内容:

[# th:each="vo:${lists}"]/*** [(${vo.remarks})]*/private String [(${vo.fieldName})] ;
[/]

下面是我写的单元测试:

/*** for 语法* */@Testpublic void test_thymeleaf_03(){//模板引擎TemplateEngine engine = new TemplateEngine();//读取磁盘中的模板文件ClassLoaderTemplateResolver resolver = new ClassLoaderTemplateResolver();//路径resolver.setPrefix("thymeleaf/");//后缀resolver.setSuffix(".java");//设置模板模式、默认是HTMLresolver.setTemplateMode("TEXT");//设置引擎使用 resolveengine.setTemplateResolver(resolver);//准备数据 使用contextContext context = new Context();//添加基本类型List<Map<String,String>> list = new ArrayList<>();Map<String,String> map = new HashMap<>();map.put("fieldName","name");map.put("remarks","姓名");Map<String,String> map1 = new HashMap<>();map1.put("fieldName","age");map1.put("remarks","年龄");list.add(map);list.add(map1);context.setVariable("lists",list);String out = engine.process("FOR_TEST",context);System.out.printf(out);}

执行一下,看看结果:

好了,基于上面两种方式就可以想写你的代码生成的逻辑了,今天就说到这吧,今天絮絮叨叨了一回。

如何使用模板Thymeleaf来自动生成java代码相关推荐

  1. java插件开发_编写一个IDEA插件之:自动生成Java代码

    我很喜欢IDEA的一键自动生成代码功能,例如自动生成构造方法.字段的Get/Set方法.ToString方法等等,除此之外,也有一些插件提供自动生成代码的功能,例如我们所熟悉的GsonFormat插件 ...

  2. AutoService+javaPoet+maven+注解自动生成java代码

    1.资料 AutoService: https://github.com/google/auto/tree/master/service javaPoet: https://github.com/sq ...

  3. java自动生成数据库代码

    自从学习计算机以来,学习了很多知识,都是从网上学习的,特别感谢网络,经常自比网络的boy, 现在把我过去做的工具共享出来,希望给大家的工作与学习带来帮助. webtool自动生成数据库代码,支持mys ...

  4. aidl生成java文件_Android AIDL自动生成Java文件测试

    /******************************************************************************** * Android AIDL自动生成 ...

  5. 使用maven根据JSON文件自动生成Java POJO类(Java Bean)源文件

    根据JSON文件自动生成Java POJO类(Java Bean)源文件 本文介绍使用程序jsonschema2pojo来自动生成Java的POJO类源文件,本文主要使用maven,其他构建工具请参考 ...

  6. mybatis-generator自动生成Java的CRUD等代码的独立包使用详解

    点击下载:mybatis-generator自动生成Java独立包 这个mybatis-generator独立包是项目外使用,很大程度上减少了业务开发人员的手动编码时间,不依赖maven,2分钟可以生 ...

  7. 图形化开放式生信分析系统开发 - 7 分析报告的模板定制与自动生成

    前文链接: 图形化开放式生信分析云平台产品开发 - 1 需求分析及技术实现 图形化开放式生信分析云平台产品开发 - 2 样本信息处理 图形化开放式生信分析云平台产品开发 - 3 生信分析流程的进化 图 ...

  8. 小d课堂mysql_小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_2-6.Mysql逆向工程效率神器之使用IDE自动生成Java实体类...

    笔记 6.Mysql逆向工程效率神器之使用IDE自动生成Java实体类 简介:实战使用IDE根据Mysql自动生成java pojo实体类 1.IDEA连接数据库 菜单View→Tool Window ...

  9. mysql中怎样自动生成代码_MySql之自动生成CRUD代码

    MySql之自动生成CRUD代码 MyBatis能够通过获取MySql中的information_schema从而获取表的字段等信息,最后通过这些信息生成代码. 笔者受此启发,将MyBatis-Gen ...

最新文章

  1. 【css】如何使光标移动到某个区域后改变形状
  2. SAP WM 如何看一个交货单相关的TO是从哪些货架上拣配的?
  3. 我的世界服务器反作弊不起作用,我的世界服务器反作弊怎么搞 | 手游网游页游攻略大全...
  4. 企业实战01_Linux下安装ActiveMQ并设置开机启动
  5. c语言printf %llo,c++ - Printf疯狂了 - 堆栈内存溢出
  6. MySql的备份与恢复
  7. Retrofit 使用flatmap操作符时处理错误、异常
  8. 劝你别再闷头自学NLP了!!!请收下这套自然语言处理(NLP)算法学习路线!
  9. 快捷笔记应用Side Notes Mac
  10. sqlyog和mysql一样么_navicat和sqlyog的区别
  11. 【飘儿菜】-Matplotlib-绘制饼图
  12. 面试必备之Mysql索引底层原理分析
  13. 浅析微信小程序的底层架构原理
  14. 三十、再问唐僧出生之迷
  15. 基于HSI颜色模型实现去除照片的“红眼现象”
  16. Windows 11 22H2 中文版、英文版 (x64、ARM64) 下载 (updated Jan 2023)
  17. ORA-3136错误解决
  18. 如何搜索百度云盘里的文件
  19. Mac新手——如何在macOS中创建访客帐户
  20. 【论文总结】Towards Open World Object Detection(附翻译)

热门文章

  1. ldd not a dynamic executable
  2. 中级会计师考过还考英语计算机不,中级会计师考试是笔试还是机考 机考怎么操作...
  3. 攻略与反攻略——聊天篇
  4. Python调用API打造一个语音合成系统(百度智能云)
  5. 【Spring】Spring底层核心原理解析
  6. 系统架构设计——高可扩展性架构
  7. Webpack的Code Splitting实现按需加载
  8. 2022-2028年全球及中国汽车油箱零件行业投资前景分析
  9. Ubuntu下安装Vim教程
  10. ubuntu 安装kde桌面_给Ubuntu安装KDE桌面 [转]