可以通过JDBC连接数据库,获取数据库中的元数据生成Excel格式的数据模型定义。
java -jar nop-cli.jar reverse-db litemall -c=com.mysql.cj.jdbc.Driver --username=litemall --password=litemall123456 --jdbcUrl="jdbc:mysql://127.0.0.1:3306/litemall?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC"
nop-cli的reverse-db命令需要传入参数【数据库模式名】,例如litemall,然后通过jdbcUrl等选项传入JDBC连接字符串等信息。
Usage: nop-cli reverse-db [-dhV] -c=<driverClassName> -j=<jdbcUrl>
[-o=<outputFile>] [-p=<password>] [-t=<table>]
-u=<username> <catalog>
对数据库进行逆向工程分析,生成Excel模型文件
<catalog> 数据库模式名
-c, --driverClass=<driverClassName>
JDBC驱动类
-d, --dump 输出文件(缺省输出到命令行窗口中)
-h, --help Show this help message and exit.
-j, --jdbcUrl=<jdbcUrl> jdbc连接
-o, --output=<outputFile> 输出文件(缺省输出到命令行窗口中)
-p, --password=<password> 数据库密码
-t, --table=<table> 数据库表模式,例如litemal%表示匹配litemall为前缀的表
-u, --username=<username> 数据库用户名
-V, --version Print version information and exit.
如果已经获得Excel数据模型,则可以使用nop-cli命令行工具的gen命令来生成初始工程代码
java -jar nop-cli.jar gen -t=/nop/templates/orm model/app-mall.orm.xlsx
具体生成的内容如下:
├─app-mall-api 对外暴露的接口定义和消息定义
├─app-mall-codegen 代码生成辅助工程,根据ORM模型更新当前工程代码
├─app-mall-dao 数据库实体定义和ORM模型
├─app-mall-service GraphQL服务实现
├─app-mall-web AMIS页面文件以及View模型定义
├─app-mall-app 测试使用的打包工程
├─deploy 根据Excel模型生成的数据库建表语句
如果只想使用NopORM,不需要生成前端代码,也不需要生成GraphQL服务,则可以使用orm-dao模板
java -jar nop-cli.jar gen -t=/nop/templates/orm-dao -o=app-dao model/app-mall.orm.xlsx
除了使用Nop平台内置的代码生成模板,我们还可以建立自己的模板工程。具体过程参见项目bsin-codegen. B站视频: 可逆计算原理和Nop平台介绍及答疑, 从44分钟20秒开始
java -Xbootclasspath/a:bsin-codegen-template/src/main/resources/ -jar nop-cli-2.0.0-BETA.1.jar gen bsin-demo/model/bsin-demo.orm.xlsx -t=/bsin/templates/orm -o=bsin-demo
通过-Xbootclasspath/a: bsin-codegen-template/src/main/resources/引入外部的jar包或者目录到classpath中,然后通过-t=/bsin/templates/orm来引用classpath下的模板文件,就可以生成代码
使用NopCli工具可以监听指定目录,当目录下的文件发生变动时自动执行脚本代码。
java -jar nop-cli.jar watch app-meta -e=taks/gen-web.xrun
以上配置表示监控 app-meta目录,当其中的文件发生变化时执行gen-web.xrun脚本文件
在这个脚本文件中,我们可以通过GenWithDependsCache等Xpl模板标签来动态生成代码
<c:unit xmlns:c="c" xmlns:run="run" xmlns:xpl="xpl">
<run:GenWithCache xpl:lib="/nop/codegen/xlib/run.xlib"
srcDir="/meta/test" appName="Test"
targetDir="./target/gen"
tplDir="/nop/test/meta-web"/>
</c:unit>
GenWithCache标签会设置srcDir,appName属性,然后执行tplDir指定的代码生成模板,生成文件的存放路径由targetDir指定。
代码生成的过程中启用了依赖追踪,第一次生成之后再此触发gen-web.xrun运行代码生成任务时会自动检查输出文件所对应的依赖模型文件,只有当依赖文件发生变化时才会重新生成,否则会自动跳过。
java -jar nop-cli.jar extract test.orm.xlsx -o=my.orm.json
extract指令会识别文件的后缀名,选择注册到系统中的解析器进行解析,得到Json对象后再导出为JSON文件。如果存在对应的xdef元模型定义,也可以选择导出为XML格式
通过-o
导出文件参数可以指定导出为xml或者json,比如 -o=my.orm.xml
根据文件后缀名可以确定需要导出为xml格式。
java -jar nop-cli.jar gen-file my.orm.json -t=/nop/orm/imp/orm.imp.xml
gen-file
会根据-t
参数指定的模板文件来导出Excel。模板文件可以如果是imp.xml,则使用导入模型关联的导出模板来导出。也可以是xpt.xlsx这种报表模板,
此时将按照报表模型实现导出。JSON文件解析得到的对象在报表导出时对应于名为entity的对象。
通过gen-file
指令,给定-t
为报表模板文件
java -jar nop-cli.jar gen-file data.json -t=/my/test.xpt.xlsx -o=target/test.xlsx
gen-file
的第一个参数data.json
会被解析为一个Map,然后传入报表模板作为参数entity
。通过-o
参数可以指定导出文件位置和导出类型
java -jar nop-cli.jar run-task my.task.xml -if=inputs.json
读取inputs.json
文件作为task的输入参数,运行my.task.xml
逻辑编排模型。
java -jar nop-cli.jar repackage -i=app -o=my-tool.jar
repackage指令将根据输入目录下的_vfs
目录以及application.yaml
、bootstrap.yaml
文件,把它们打包到当前nop-cli.jar
包中,输出一个新的可执行的jar包。
java -jar nop-cl.jar export-db test.export-db.xml -o=data
根据export-db.xml
中的配置,将数据库中的数据导出到data目录下,可以选择导出为csv或者sql格式。导出时可以执行字段重命名,值的变换等操作。可以选择只导出部分字段。
java -jar nop-cl.jar import-db test.import-db.xml -i=data
从data目录下导入数据到指定数据库中,导入时可以按照keyFields去重,并可以选择是否允许更新,还是只允许插入。导入时可以进行字段重命名和值的变换。可以选择只导入部分字段。
可以通过指定-s
参数来保存导入状态。
java -jar nop-cl.jar import-db test.import-db.xml -i=data -s=import-status.json
在 DSL 模型的 XML/JSON/YAML/XLSX 格式间进行转换
java -jar nop-cli.jar transform <inputFile>
[-o|--output <outputFile>]
[-t|--template <templatePath>]
[-f|--format <xml|json|json5|yaml|xlsx>]
参数 | 描述 |
---|---|
<inputFile> |
输入文件(支持 .xml /.json /.yaml /.xlsx 等) |
-o, --output |
输出文件(不指定时自动生成同名文件) |
-t, --template |
Excel 专用:转换模板路径(输入/输出含 .xlsx 时必填) |
-f, --format |
输出格式(不指定时按输出文件扩展名推断) |
基础转换(自动推断格式):
# XML → JSON(生成 model.json)
java -jar nop-cli.jar transform model.xml -o model.json
# JSON → YAML
java -jar nop-cli.jar transform data.json -f yaml
Excel 转换(必须用 -t
指定模板):
# Excel → XML
java -jar nop-cli.jar transform input.xlsx -t /nop/orm/imp/orm.imp.xml -o model.xml
# YAML → Excel
java -jar nop-cli.jar transform app.orm.yaml -f xlsx -t /nop/orm/imp/orm.imp.xml
.xlsx
时,-t
参数必须提供导入模型imp.xml配置-f
时,按输出文件扩展名确定格式输入文件名.json
)page.yaml
文件生成页面json文件java -jar nop-cli.jar run scripts/render-pages.xrun -i="{moduleId:'app/demo'}" -o=target
run指令可以用于执行xpl脚本文件,render-pages.xrun
脚本中调用PageProvider来生成页面json文件,-i
参数指定输入参数,-o
参数指定输出目录。
<!-- render-pages.xrun文件的内容-->
<c:script>
import io.nop.web.page.PageProvider;
import java.io.File;
const pageProvider = new PageProvider();
const options = {
moduleId: moduleId,
resolveI18n: true,
useResolver: true,
threadCount: 4
};
pageProvider.renderPagesTo(options, outputDir);
</c:script>
renderPagesTo函数会遍历_vfs/{moduleId}/pages/*/*.page.yaml
文件,并执行模板渲染。在page.yaml
中可以通过<web:GenPage>
等标签来引入View模型。
java -Dquarkus.config.locations=application.yaml -jar nop-cli.jar gen-file my.orm.json -t=/nop/orm/imp/orm.imp.xml
缺省配置了quarkus.log.level=INFO
,以及quarkus.log.category."io.nop".level=ERROR
,可以通过外部的application.yaml来覆盖缺省的quarkus配置。
通过-Dnop.config.location=application.yaml
参数指定外部配置文件
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。