PP代码生成器(三) 设计freemarker模板, 创建解决方案

简介:
这一节, 我们根据数据库生成PO对象为例, 来探讨如何使用PP制作freemarker模板, 创建解决方案. 工料:
  1. eclipse jee, 最好是安装freemarker插件, 可以高亮显示freemarker标签.
  2. 可用的数据库, 可以是mysql, oracle, db2, postgresql中的任意一种. 如果没有数据库, 使用pp_home中的sample/sample-mysql.xlsx也是可以的.
* PP支持两种数据源, 一种是数据库, 另一种是excel文件数据源. 为什么支持excel呢? 是源于我曾经在建行工作, 内部数据库权限管理极为严格. 以至于PP需要查表字段信息的sql无权访问oracle的user_tab_columns等表, 这种情况下, 可以把表信息录入到excel, 继续使用PP来生成代码.
制作freemarker文件模板
再次提示, 点击PP的”工具”->”辅助设计” 菜单可以打开”辅助设计面板”, 需要的变量都可以到里面复制, 然后粘贴到freemarker中.
以下是我在eclipse里写的freemarker文件po.flt
 <#-- 生成package信息 --> <#if p.poPackageName??>package ${p.poPackageName};</#if> <#-- 生成import信息 --> <#list g.entityImportClassSet as clazz> import ${clazz}; </#list> /** *Description: ${g.tableComment}[${g.tableName}]管理接口实现类 <br/> *Create info: ${c.author}, ${g.createTime?string("yyyy/MM/dd")} <br/> *Copyright (c) ${g.createTime?string("yyyy")}, ${c.contact} All Rights Reserved. <br/> * *@Version 1.0 */ public class ${g.entityCap}Po { <#-- 生成主键字段信息 --> <#list g.fieldLst as f> private ${f.javaTypeShort} ${f.property}; <#if f.columnComment??>// ${f.columnComment}<#if f.isPk>,主键</#if><#if !f.isNullAble>,不能为空</#if></#if> </#list> <#-- 生成不带参数的构造方法 --> /** *不带参数的构造方法 */ public ${g.entityCap}Po(){} <#-- 生成以主键为参数的构造方法 --> /** *主键作为参数的构造方法 *@param ${g.pkField.property} <#if g.pkField.columnComment??>${g.pkField.columnComment}</#if> */ public ${g.entityCap}Po(${g.pkField.javaTypeShort} ${g.pkField.property}){ this.${g.pkField.property} = ${g.pkField.property}; } <#-- 生成主键set/get方法 --> <#list g.fieldLst as f> /** *Getter <#if f.columnComment??>${f.columnComment}</#if><#if f.isPk>,主键</#if><#if !f.isNullAble>,不能为空</#if> *@return */ public ${f.javaTypeShort} get${f.propertyCap}(){ return this.${f.property}; } /** *Setter <#if f.columnComment??>${f.columnComment}</#if><#if f.isPk>,主键</#if><#if !f.isNullAble>,不能为空</#if> *@param ${f.property} */ public void set${f.propertyCap}(${f.javaTypeShort} ${f.property}){ this.${f.property} = ${f.property}; } </#list> } 
在eclipse里编辑好这个文件后, 在pp_home/config/templates里创建myscheme文件夹, 然后把po.flt复制到这个文件夹中. 到这步为止, 我们模板就制作完了.
下面我们开始创建解决方案

打开PP后, 请按如下步骤操作,

  1. 点击”可写”按钮, 使这个标签页上的控件呈可编辑状态
  2. 在”解析方案”可编辑下拉框中填写”myscheme”
  3. 在”域名”文件框里填入”com.hwp.pro”, 这里是您的项目的包前缀, 鼠标在上面停留, 可以看到提示, 可以通过${domain}在freemarker中引用它的值.
  4. 在”模块”里输入”pub”, 我们要生成文件的模块名, 鼠标在上面停留, 可以看到相应的提示
  5. “基本URL”不用填写, 生成controller, html时才可能会用到
  6. 在”基本路径”里输入”/Uers/hui/Documents/myspace/workspaces1/workspacepp/generator-test/src/main” 这是我们项目文件的路径, 最终生成文件的保存路径会和它有关系. 具体关系是生成的文件的最终保存路径是 “基本路径” + “包名”的路径.
  7. 点击”添加或修改”, 此时, 解决方案就保存好了.
下面我们开始为”解决方案” 添加 “生成任务”, 请按如下步骤操作:

选中刚才的创建的解决方案, 点击”任务列表” 下面的 “添加”, 在弹出界面中输入如下信息这里写图片描述
##### 在这个面板中作以下几点说明: 
1. 模板路径${templatesPath}会被pp_home//comfig//templates替换. 
2. 存放路径最终的结果是前面的”基本路径” + “Java” +”包名(转化成路径)” 
3. 包名后面的文本框的值, 是包名的别名, 在freemarker文件中可以通过${p.poPackageName}去引用

这进下任务列表里已经有了这个任务, 如图: 
这里写图片描述

目录
相关文章
|
1天前
|
JSON Java Maven
Javaweb之SpringBootWeb案例之自动配置以及常见方案的详细解析
Javaweb之SpringBootWeb案例之自动配置以及常见方案的详细解析
6 0
Javaweb之SpringBootWeb案例之自动配置以及常见方案的详细解析
|
4月前
|
Oracle Java 关系型数据库
Generator【SpringBoot集成】代码生成+knife4j接口文档(2种模板设置、逻辑删除、字段填充 含代码粘贴可用)保姆级教程(注意事项+建表SQL+代码生成类封装+测试类)
Generator【SpringBoot集成】代码生成+knife4j接口文档(2种模板设置、逻辑删除、字段填充 含代码粘贴可用)保姆级教程(注意事项+建表SQL+代码生成类封装+测试类)
28 0
|
8月前
|
XML Java Maven
探索Velocity模板引擎:灵活的模板生成工具
在现代的应用开发中,生成动态内容的需求非常常见。Velocity模板引擎作为一款灵活的模板生成工具,可以帮助我们将数据与模板结合,生成各种文本、HTML、XML等格式的内容。本文将深入探讨Velocity的基本概念、特点,以及如何在实际应用中使用它进行模板生成。
192 0
|
JavaScript
webpack进阶篇(二十三):代码分割和动态import
webpack进阶篇(二十三):代码分割和动态import
191 0
webpack进阶篇(二十三):代码分割和动态import
|
存储 前端开发 JavaScript
Go 语言 Web 开发很简单:使用模板将视图与逻辑分离
我们的 Web 服务器由两部分构成: 为在用户浏览器中运行的 HTML 和 JavaScript 前端代码提供服务; 接受 Web socket 连接以允许客户端进行通信。
Go 语言 Web 开发很简单:使用模板将视图与逻辑分离
|
前端开发 JavaScript Java
WEB核心【response对象(重点),案例:读取WEB工程资源文件】第十一章
本章:主要介绍response对象详情,案例SE 和 EE 读取web工程的资源文件
WEB核心【response对象(重点),案例:读取WEB工程资源文件】第十一章
|
XML 搜索推荐 关系型数据库
代码演示Mybatis-Generator扩展自定义生成
Mybatis-Generator可自动生成模型,Dao,Mapper代码,但其自带生成的代码存在以下问题: 生成的注释不是我们想要的,我们期望的是根据数据库表,细分生成不同的注释; 分页代码生成缺失,每个公司的分页方式不同,尤其是老久项目或已发布API,不能随意移动,那么如何自适应分页代码生成; Mapper.xml没有按相关代码生成分组; 重复生成代码时,Mapper.xml并非覆盖原始代码,而是对内容进行了追加; 序列化,mybatis-generator内置了SerializablePlugin,但仅对Model,并没有对Example序列化,在一些开发中是不够的; 对服务层代码没有生
157 0
|
XML 搜索推荐 关系型数据库
代码演示Mybatis-Generator 扩展自定义生成
代码演示Mybatis-Generator扩展自定义生成。
|
Web App开发 关系型数据库 Java
Springboot开发applicaiton.properties配置模板(有案例)
######################################################### # THYMELEAF ######################################################### server.
1566 0