-- velocity 的工具包 要使用人家工具包里面的api,就需要导入工具包--> org.apache.velocity.tools...> 快速入门 项目中已经导入了依赖,我们自己创建一个模板,在这个模板里面就可以使用工具类了。...toolManager.configure("tools.xml"); // 5 加载模板 Template template = engine.getTemplate...display.truncate($str) $display.truncate($str,10) $display.truncate($str,10,"10") ## alt 方法用于判断给的数据是否为空...,如果为空,展示默认值 不为空: $display.alt($num1,"hhhh") EscapeTool $esc.velocity($HTML) $esc.html($HTML) $esc.url
false enableSkipView 开启跳过视图 默认值:false disableSqlFilter 禁用 sql 过滤 默认值:true,语法不能支持使用 sql 过滤表的话,可以考虑关闭此开关...(TemplateEngine) 默认 Velocity ;可选模板引擎 Beetl 或 Freemarker。...--velocity--> org.apache.velocity velocity-engine-core...由于项目中需要使用序列化就按照默认开启了 .enableTableFieldAnnotation() // 开启生成实体时生成字段注解...,"modify_time"字段自动填充为插入修改时间 .idType(IdType.AUTO) //设置主键自增
Velocity简介 Apache Velocity是一个基于Java的模板引擎,它提供了一个模板语言去引用由Java代码定义的对象。...页面再由VelocityViewServlet或任何支持Velocity的框架处理。 源代码生成:Velocity可基于模板生成Java、SQL或PostScript源代码。...利用Velocity,电子邮件模板可以存储在一个文本文件,而不是直接嵌入到电子邮件生成器的Java代码中。 XML转化:Velocity提供一个Ant任务——Anakia。...{}的写法,使用$vari获取变量时,如果变量不存在,Velocity引擎会将其原样输出,通过使用$!...在web项目中使用Velocity velocity只是一个模板引擎,在web项目中使用Velocity还得添加一个HTTP框架来处理请求和转发,apache提供了velocity-tools,其提供了
struts2同时支持jstl(.jsp)、velocity(.vm)、freemaker(.ftl)三种模板。...的语法符号大概分二类,一类用#开头,代表控制符号,#set表示定义变量,另一类用$开头,通常用于显示变量,上面的示例定义了三个变量: awbpre 值为'112',awbno值为'89089011',airwayBillNo...()) 2 $key -> $table.get($key) 3 #end 五、判断是否为空 1 #if($null.isNull($orderList.orders...,如果判断单个对象是否为空,参考下面这样: 1 #if($(orderDto)) 2 订单对象有值 3 #else 4 订单对象为空 5...$(orderDto)) 8 订单对象为空 9 #else 10 订单对象有值 11 #end 六、宏示例 宏可以理解为“函数”,定义一个宏即相当于定义一个子函数
-- velocity 模板引型 (俩者选其一) --> org.apache.velocity...代码生成, 输入 0 表示使用 Velocity 引擎 !!"...(true)// XML columList .setIdType(IdType.AUTO)//主键生成策略,自增..."; } })) ).setTemplate( // 关闭默认 xml 生成,调整生成...至 根目录 new TemplateConfig().setXml(null) // 自定义模板配置,模板可以参考源码 /mybatis-plus
以上就是创建了一个maven项目 我们要在项目中使用velocity,所以要导入对应的依赖 <!...HTML文件 总结 就是前端写velocity模板,后端写代码,将数据填充到模板里面,生成HTML文件 以后就是 填充的内容需要是动态的,使用的模板是动态的,输出的HTML的路径是动态的,其他的都是固定的...HTML文件,是不会出现在HTML里面的,但是会用空区域代替 有注释的地方,在HTML里面会有很多的空区域 非解析内容 也就是在模板里面写的什么,最后在HTML里面就会展示什么 引用 变量引用...,也就是我们要使用哪个模板生成java文件 * @param className 实体类名称 User * @param packageName 包名称 在哪个包下生成...packageName){ String packagePath = "main"+ File.separator +"java"+ File.separator; // 如果包名不为空
params.put("height", height.concat("px")); } return params; } 取出width和height来判断是否为空...,为空则设置默认值。...关键的_template参数来了,如果外部传入的参数没有_template,则设置默认的Youtube模板。如果传入了,就使用传入的,也就是说,aaaa是成功的传进来了。 ?...能传递_template了,接下来看下是如何取模板和渲染模板的。...这里主要看下Velocity自带的FileResourceLoader和ClasspathResourceLoader FileResourceLoader会对用户传入的模板路径使用normalizePath
null, 则左值不会被赋值,也就是说会保留以前的值。...如果foo 为假,则表达式也为假;并且 bar 将不被求值。如果 foo 为真,Velocity 模板引擎将继续检查bar的值,如果 bar 为真,则整个表达式为真。...如果 bar 为假,将没有输出因为整个表达式为假。 Velocity中的宏我们可以理解为函数。...但需要特别注意的是,如果b.vm里同时定义有变量$param,则b.vm里将使用b.vm里定义的值。...10.转义字符’\’的使用 如果reference被定义,两个’\’意味着输出一个’\’,如果未被定义,刚按原样输出。
-- 如果要使用mp的代码生成还需要加入模板引擎,不建议使用maven插件生成啦!!!...--> org.apache.velocity velocity ${velocity.version} <!...global-config: #主键类型 0:"数据库ID自增", 1:"用户输入ID",2:"全局唯一ID (数字类型唯一ID)", 3:"全局唯一ID UUID"; id-type...: 0 #字段策略 0:"忽略判断",1:"非 NULL 判断"),2:"非空判断" field-strategy: 0 #驼峰下划线转换 db-column-underline
**VelocityEngine ** ,相比于Velocity提供了更加强大的功能,框架开发者一般使用这个类在框架中使用velocity模板渲染功能,内部也是是委托给RuntimeInstance来具体实现的...** 3)、RunTime模块 ** 源码org.apache.velocity.runtime包下: 负责加载模板文件,解析为JavaCC语法树,使用深度遍历算法渲染语法书节点,生成渲染结果。...screenshot.png 总结:velocity渲染引擎首先磁盘加载模板文件到内存,然后解析模板模板文件为AST结构,并对AST中每个节点进行初始化,第二次加载同一个模板文件时候如果开启了缓存则直接返回模板资源...所以在编写velocity模板时候尽可能使用临时变量保存反射调用结果,减少反射调用次数,降低页面渲染时间。...另外如果开启了资源缓存,并且file.resource.loader.modificationCheckInterval >0还会实现hot deploy也就是会每隔一段时间从磁盘获取最新的模板,重新生成
现在是揭开viewResolver如何“尽职” 的时候了。 有ViewResolver的职责为前提,理解甚至于自己声明一个ViewResolver接口变得不再困难。...如果我们想要避免每次为同一类型的视图指定某些共同的属性,也可以定义一个模板声明,然后通过parent引用该模板声明。...---- 注意: 如果要在ResourceBundleViewResolver中使用Velocity或者Freemarker之类的通用 模板引擎渲染的视图,那么需要在WebApplicationContext...我们以使用Velocity类型视图的配置为例,(Freemarker类型视图的配置与Velocity类型视图的配置雷同)。...如果没有为某个viewResolver指定order值的话,默认值为Integer.MAX_ VALUE,对应的是最低优先级。
值处理 问题导入 如下搜索场景,在多条件查询中,有条件的值为空应该怎么解决?...,此处简化成直接定义变量了 LambdaQueryWrapper lqw = new LambdaQueryWrapper(); //参数1:如果表达式为true,那么查询才使用该条件...不同的表应用不同的id生成策略 日志:自增(1,2,3,4,……) 购物订单:特殊规则(FQ23948AK3843) 外卖单:关联地区日期等信息(10 04 20200314 34 91)...} 五、快速开发-代码生成器 问题导入 如果只给一张表的字段信息,能够推演出Domain、Dao层的代码? 1. MyBatisPlus提供模板 Mapper接口模板 实体对象类模板 2....--velocity模板引擎--> org.apache.velocity velocity-engine-core
代码实践 这个工具的实现,需要依赖Apache的velocity包。Apache Velocity是一个基于Java的模板引擎,它提供了一个模板语言去引用由Java代码定义的对象。...页面再由VelocityViewServlet或任何支持Velocity的框架处理。 源代码生成:Velocity可基于模板生成Java、SQL或PostScript源代码。...大量的开源和商业软件包的开发就是这样利用Velocity。 电子邮件自动生成:许多应用程序为了账户注册、密码提醒或自动寄送报表之需自动生成电子邮件。...利用Velocity,电子邮件模板可以存储在一个文本文件,而不是直接嵌入到电子邮件生成器的Java代码中。 XML转化:Velocity提供一个Ant任务——Anakia。...Anakia读取XML文件,利用Velocity模板转换成所需的文档格式。常见的应用是将某种格式的文档转换成的一个带样式的HTML文档。 好了,就贫嘴到这里,下面开始安静撸代码了。。。
2、完整的pom依赖:【大家可以使用我的pom,我在这里碰到了好多坑啊,因为依赖版本的问题,搞了我很久】 <?xml version="1.0" encoding="UTF-8"?...freemarker String templatePath = "/templates/mapper.xml.ftl"; // 如果模板引擎是 velocity...4、自动生成了这些实体类,业务类,控制层类,xml文件等等 ?...扫描,多个目录用逗号或者分号分隔(告诉 Mapper 所对应的 XML 文件位置) mapper-locations: classpath:mapper/*.xml # 以下配置均有默认值,可以不设置...configuration: # 是否开启自动驼峰命名规则映射:从数据库列名到Java属性驼峰命名的类似映射 map-underscore-to-camel-case: true # 如果查询结果中包含空值的列
Tomcat 作为 Servlet 规范的实现者,它在应用启动的时候会扫描 Jar 包里面的 .tld 文件,加载里面定义的标签库,但是,我们在开发的时候很多都不是采用 JSP 作为 Web 页面的模板的...,很多都是使用 Velocity 之类的模板引擎,自然而然,为了加快应用的启动速度,我们可以把 Tomcat 里面的这个功能给关掉。...只要在 Context 中把这个属性设置成 false,那么我们就可以关闭 Tomcat 的 TLD 扫描功能了,为了让所有的应用都可以关闭这个功能,我们可以将 Tomcat 目录下的 conf/context.xml...Tomcat 就已经使用了 processTlds,我们的配置完全没有生效。...在 context 中,我们还可以配置一个 JarScanner,这个 JarScanner 会被用来扫描 Jar 包中的 tld 文件,我们可以在默认的 context.xml 中配置一个空的 JarScanner
----如果想要使用这套模板生成其他的代码,只需要改变参数的值即可,而不需要改变模板文件。...而且如果我需要根据用户的输入来生成不同次数的重复代码(也就是循环),又该如何实现呢?所以建议大家直接使用已有的 模板引擎 技术,轻松实现模板编写和动态内容生成。什么是模板引擎?为什么需要它?...> 存在用户 用户不存在3、默认值FreeMarker 对变量的空值校验是很严格的,如果模板中某个对象为空,FreeMarker 将会报错而导致模板生成中断。...为了防止这个问题,建议给可能为空的参数都设置默认值。使用 表达式!默认值 的语法,示例代码如下:${user!"用户为空"}上述代码中,如果 user 对象为空,则会输出 “用户为空” 字符串。...实践编程导航星球的定制化代码生成项目会演示如何使用 FreeMarker 模板引擎来生成代码。
鱼皮 ----------- 如果想要使用这套模板生成其他的代码,只需要改变参数的值即可,而不需要改变模板文件。...而且如果我需要根据用户的输入来生成不同次数的重复代码(也就是循环),又该如何实现呢? 所以建议大家直接使用已有的 模板引擎 技术,轻松实现模板编写和动态内容生成。 什么是模板引擎?为什么需要它?...> 存在用户 用户不存在 3、默认值 FreeMarker 对变量的空值校验是很严格的,如果模板中某个对象为空,FreeMarker 将会报错而导致模板生成中断。...用户为空"} 上述代码中,如果 user 对象为空,则会输出 “用户为空” 字符串。 4、循环 在上述 Demo 实战部分,已经给大家演示了循环的用法。...实践 编程导航星球的定制化代码生成项目会演示如何使用 FreeMarker 模板引擎来生成代码。
- 所注解的元素必须是数字,并且它的值要小于或等于给定的值 @Min - 所注解的元素必须是数字,并且它的值要大于或等于给定的值 @NotNull - 所注解元素的值必须不能为null @Null -...所注解元素的值必须为null @Past - 所注解的元素的值必须是一个已过去的日期 @Pattern - 所注解的元素的值必须匹配给定的正则表达式 @Size - 所注解的元素的值必须是String...定义 ResourceBundleViewResolver - 将视图解析为资源bundle(一般为属性文件) TilesViewResolver - 将视图解析为Apache Tile定义,其中tile...布局,从不同的Velocity模板中组合页面 VelocityViewResolver - 将视图解析为Velocity模板 XmlViewResolver - 将视图解析为特定XML文件中的bean定义...另外,如果在你的JSP页面中使用了JSP标准标签库(JavaServer Pages Standard Tag Library,JSTL)的话,InternalResourceViewResolver能够将视图名解析为
如果有一个代码生成工具来做这些重复工作,显然可以提高我们的工作效率。这时,就需要了解模板引擎技术。...二 模板引擎工具:freemarker与velocity 最早接触的是velocity,记得14,15年左右,当时在某家公司开发的前端页面,就是使用velocity作为模板引擎。...创建前端页面的vm/tpl模板后,利用velocity提供的能力,编写脚本生成静态页面,然后再走上线更新。...除了velocity之外,freemarker也是一款模板引擎,使用FreeMarker Template Language(FTL)编写,它是一种简单的、专用的语言。...简单来说,就是一些固定模式(代码/标签/逻辑)+变量的组合,其中变量在后面根据需要,替换成所需的值; (2)Java Object是模型/对象,可以简单理解为一些key-value对,key是变量名称,
是apache的一个开源的模板引擎,它基于模板来生成文本输出。...模板文件中四种元素 文本,直接输出的部分 注释,即格式不会输出 插值(Interpolation):即${…}部分,将使用数据模型中的部分替代输出 FTL指令:FreeMarker指令,和...string("yyyy年MM月")} 数字转换为字符串 数字直接显示,会出现逗号 去除逗号 空值处理运算符 如果在模板中使用了变量但是在代码中没有对变量赋值,那么运行生成时会抛出异常 可以使用...> price变量存在 price变量不存在 缺失变量默认值:“!” 可以判断是否为空值,也可以使用!...对null值做转换处理 当为空时, 会使用默认值代替 ${price!'
领取专属 10元无门槛券
手把手带您无忧上云