{"id":20064122,"url":"https://github.com/sagframe/sagacity-quickvo","last_synced_at":"2026-05-08T09:02:20.669Z","repository":{"id":65952170,"uuid":"291877329","full_name":"sagframe/sagacity-quickvo","owner":"sagframe","description":null,"archived":false,"fork":false,"pushed_at":"2026-05-04T03:45:31.000Z","size":468,"stargazers_count":2,"open_issues_count":1,"forks_count":2,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-05-04T05:27:53.489Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sagframe.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2020-09-01T02:38:40.000Z","updated_at":"2026-05-04T03:45:35.000Z","dependencies_parsed_at":"2024-10-25T12:34:59.882Z","dependency_job_id":"104c7bed-7a1b-454c-b464-1a80650a8833","html_url":"https://github.com/sagframe/sagacity-quickvo","commit_stats":null,"previous_names":[],"tags_count":57,"template":false,"template_full_name":null,"purl":"pkg:github/sagframe/sagacity-quickvo","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sagframe%2Fsagacity-quickvo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sagframe%2Fsagacity-quickvo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sagframe%2Fsagacity-quickvo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sagframe%2Fsagacity-quickvo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sagframe","download_url":"https://codeload.github.com/sagframe/sagacity-quickvo/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sagframe%2Fsagacity-quickvo/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32773857,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-08T08:22:46.396Z","status":"ssl_error","status_checked_at":"2026-05-08T08:22:45.650Z","response_time":54,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-13T13:44:54.206Z","updated_at":"2026-05-08T09:02:20.628Z","avatar_url":"https://github.com/sagframe.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# sagacity-quickvo 是sqltoy-orm配套的POJO生成工具\n# 当前版本\n```xml\n\u003c!-- https://mvnrepository.com/artifact/com.sagframe/sqltoy-quickvo --\u003e\n\u003cdependency\u003e\n    \u003cgroupId\u003ecom.sagframe\u003c/groupId\u003e\n    \u003cartifactId\u003esqltoy-quickvo\u003c/artifactId\u003e\n    \u003cversion\u003e5.2.6\u003c/version\u003e\n\u003c/dependency\u003e\n\n```\n# maven插件使用方式(内嵌了quickvo)\nsqltoy quickvo maven插件，最新版本：1.0.16\n* 在pom.xml 中加入quickvo的插件\n* 在项目根路径下编写mvn-quickvo.bat,便于快速执行\n```properties\nmvn quickvo:quickvo\n```\n\n```xml\n\u003cplugins\u003e\n    \u003cplugin\u003e\n        \u003cgroupId\u003ecom.sagframe\u003c/groupId\u003e\n        \u003cartifactId\u003equickvo-maven-plugin\u003c/artifactId\u003e\n        \u003cversion\u003e1.0.16\u003c/version\u003e\n        \u003cconfiguration\u003e\n            \u003cconfigFile\u003e/src/main/resources/quickvo.xml\u003c/configFile\u003e\n            \u003cbaseDir\u003e${project.basedir}\u003c/baseDir\u003e\n        \u003c/configuration\u003e\n        \u003cdependencies\u003e\n            \u003cdependency\u003e\n                \u003cgroupId\u003ecom.mysql\u003c/groupId\u003e\n                \u003cartifactId\u003emysql-connector-j\u003c/artifactId\u003e\n                \u003cversion\u003e8.4.0\u003c/version\u003e\n            \u003c/dependency\u003e\n        \u003c/dependencies\u003e\n    \u003c/plugin\u003e\n\u003c/plugins\u003e\n```\n# 工具类模式使用方式\n* 请参见 https://github.com/sagframe/sqltoy-quickstart\n\n* 在tools/quickvo 目录下面，配置quickvo.xml 设置相关任务信息，点击quickvo.bat 生成POJO\n* 参照下面的例子：注意根据项目实际情况决定是否要严格分entity和dto(vo)两层\n\n# quickvo.xml 的配置说明\n```xml\n\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\n\u003cquickvo xmlns=\"http://www.sagframe.com/schema/quickvo\"\n\txmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n\txsi:schemaLocation=\"http://www.sagframe.com/schema/quickvo http://www.sagframe.com/schema/sqltoy/quickvo.xsd\"\u003e\n\t\u003c!-- 下面两行是强调数据库的关键属性不一定要用 file=\"db.properties\" 方式来引入 --\u003e\n        \u003c!--\u003cproperty name=\"jdbc.username\" value=\"mydb\" /\u003e--\u003e\n        \u003c!--\u003cproperty name=\"jdbc.password\" value=\"mydbPassword\" /\u003e--\u003e\n        \u003c!-- db配置文件,也可以是application.yml 文件 --\u003e\n\t\u003cproperty file=\"src/resources/application.properties\" /\u003e\n\t\u003cproperty name=\"project.version\" value=\"1.0.0\" /\u003e\n\t\u003cproperty name=\"project.name\" value=\"sqltoy-strict\" /\u003e\n\t\u003cproperty name=\"project.package\" value=\"com.strict.modules\" /\u003e\n\t\u003cproperty name=\"include.schema\" value=\"false\" /\u003e\n\t\u003c!-- set method 是否支持返回对象自身(默认是true),即: public VO setName(String name){this.name=name;return this;} --\u003e\n\t\u003cproperty name=\"field.support.linked.set\" value=\"false\" /\u003e\n\t\u003c!-- 演示自定义类似swagger api文档注释实现,配合task定义中的api-doc=\"custom\" 使用\n\t     当然这里是演示，正常task中的api-doc 有swagger-v3、swagger-v2默认选项\n\t --\u003e\n\t\u003capi-doc\u003e\n\t\t\u003cimports value=\"io.swagger.v3.oas.annotations.media.Schema\" /\u003e\n\t\t\u003cdoc-class-template\u003e\n\t\t\u003c![CDATA[@Schema(name=\"${className}\",description=\"${tableRemark}\")]]\u003e\n\t\t\u003c/doc-class-template\u003e\n                \u003c!-- 固化属性: colName, colRemark, nullable, fieldType, fieldName, defaultValue  --\u003e\n\t\t\u003cdoc-field-template\u003e\n\t\t\u003c![CDATA[@Schema(name=\"${fieldName}\",description=\"${colRemark}\",nullable=${nullable})]]\u003e\n\t\t\u003c/doc-field-template\u003e\n\t\u003c/api-doc\u003e\n\t\u003c!-- schema 对照关系:mysql 对应 db 名称; oracle 对应 用户名称，如出现字段重复等情况，请结合schema和catalog进行配置过滤 --\u003e\n\t\u003c!-- 注意:当在多schema或tablespace场景下,在POJO中会出现重复字段，是因为schema和catalog 配置不正确，没有完成隔离 --\u003e\n\t\u003cdatasource name=\"dataSource\" url=\"${db.url}\" driver=\"${db.driver_class}\" \n\t\tschema=\"${db.schema}\" catalog=\"${db.schema}\" username=\"${db.username}\" password=\"${db.password}\" /\u003e\n\t\n\t\u003ctasks dist=\"src/main/java\" encoding=\"UTF-8\"\u003e\n\t\t\u003ctask active=\"true\" author=\"zhongxuchen\" include=\"^SAG_\\w+\" datasource=\"dataSource\" api-doc=\"swagger-v3|swagger-v2|custom|false\"\u003e\n\t\t    \u003c!-- \n                     entity 配置中存在has-abstract:默认为true,可以设置为false表示pojo不需要抽象类，\n\t\t     可以设置extends=\"package.parentClass\"指定父类 \n\t\t     skip-extends-fields=\"${commonFilelds}\"   lombok=\"true\" lombok-chain=\"true\"\n                    --\u003e\n\t\t    \u003centity package=\"${project.package}.sagacity.entity\" substr=\"Sag\" name=\"#{subName}\"/\u003e\n\t\t    \u003c!-- 在pojo和vo严格分层情况下，VO支持 lombok=\"true\" lombok-chain=\"true\" 避免生成get/set，\n                         to-dir: 支持 extends指定父类\n\t\t\t skip-extends-fields=\"${commonFilelds}\" \n\t\t     --\u003e\n\t\t     \u003cvo package=\"${project.package}.sagacity.vo\" substr=\"Sag\" name=\"#{subName}VO\" /\u003e\n\t\t\u003c/task\u003e\n\t\t\u003ctask active=\"true\" author=\"zhongxuchen\" include=\"^SYS_\\w+\" datasource=\"strict\" swagger-model=\"true\"\u003e\n\t\t     \u003centity package=\"${project.package}.system.entity\" substr=\"Sys\" name=\"#{subName}\"/\u003e\n\t\t     \u003cvo package=\"${project.package}.system.vo\" substr=\"Sys\" name=\"#{subName}VO\" /\u003e\n\t\t\u003c/task\u003e\n\t\u003c/tasks\u003e\n\t\u003c!-- 主键策略配置: identity类型的会自动产生主键策略，其他场景sqltoy根据主键类型和长度自动分配相应的策略方式. \n\t     strategy分:sequence\\assign\\generator 三种策略：\n\t     sequence 需要指定数据库对应的sequence名称。 \n\t     assign 为手工赋值\n\t     generator为指定具体产生策略,目前分:default:22位长度的主键\\nanotime:26位纳秒形式\\snowflake雪花算法\\uuid\\redis --\u003e\n\t\u003cprimary-key\u003e\n\t\t\u003ctable name=\"SAG_\\w+|SYS_\\w+\" strategy=\"generator\" generator=\"default\" /\u003e\n\t\t\u003c!--\u003ctable name=\"xxxTABLE\" strategy=\"sequence\" sequence=\"SEQ_XXXX\"/\u003e --\u003e\n\t\t\u003c!--\u003ctable name=\"sys_staff_info\" strategy=\"generator\" generator=\"snowflake\"/\u003e --\u003e\n\t\u003c/primary-key\u003e\n\n\t\u003c!-- 基于redis产生有规则的业务主键 --\u003e\n\t\u003cbusiness-primary-key\u003e\n\t\t\u003c!-- 1位购销标志_2位设备分类代码_6位日期_3位流水 (如果当天超过3位会自动扩展到4位) --\u003e\n\t\t\u003c!-- 业务主键可以充当实际的主键，如果字段是主键会覆盖原来的主键策略 --\u003e\n\t\t\u003c!-- 包含的三个宏: @substr(${field},startIndex,length) @case(value,case1,value1,case2,value2,other) \n\t\t\t@df(yyMMdd) 日期格式化,如果不需要加入日期可以用@df('') --\u003e\n\t\t\u003c!--\u003ctable name=\"SQLTOY_DEVICE_ORDER\" column=\"ORDER_ID\"\tgenerator=\"redis\" signature=\"${psType}@case(${deviceType},PC,PC,NET,NT,OFFICE,OF,SOFTWARE,SF,OT)@day(yyMMdd)\"\n\t\t\trelated-columns=\"psType,deviceType\" length=\"12\" /\u003e--\u003e\n\t\u003c/business-primary-key\u003e\n\n\t\u003c!-- 主子表的级联关系 update-cascade:delete 表示对存量数据进行删除操作,也可以写成:ENABLED=0(sql片段,置状态为无效),orderBy 支持级联时排序 --\u003e\n\t\u003c!--  常规情况下无需配置cascade,也不推荐，这里只是演示说明，不要被误导   --\u003e\n\t\u003ccascade\u003e\n\t\t\u003c!-- \u003ctable  name=\"SAG_DICT_DETAIL\"  update-cascade=\"delete\" load=\"STATUS=1\"  orderBy=\"\"/\u003e --\u003e\n\t\u003c/cascade\u003e\n\n\t\u003c!-- 数据类型对应关系 \n\t    native-types表示特定数据库返回的字段类型; \n\t    jdbc-type：表示对应jdbc标准的类型(见:java.sql.Types),主要用于vo @Column注解中，设置其类型,方便操作数据库插入或修改时设置类型;\n\t\tjava-type:表示对应java对象的属性类型(非java.lang的需要将包名写完整便于import) \n\t\timport-types: 可以自行定义需要引入的类型，多个用逗号分隔\n\t\t--\u003e\n\t\u003ctype-mapping\u003e\n\t\t\u003c!-- 保留1个范例,一般无需配置 --\u003e\n\t\t\u003csql-type native-types=\"NUMBER,DECIMAL,NUMERIC\"\tprecision=\"1..8\" scale=\"0\" jdbc-type=\"INTEGER\" java-type=\"Integer\" /\u003e\n\t\t\u003c!-- 增加雪花算法的演示 --\u003e\n\t\t\u003csql-type native-types=\"BIGINT\" jdbc-type=\"BIGINT\" java-type=\"java.math.BigInteger\" /\u003e\n\u003c!-- 泛型注意xml转义符号，table-field指定具体表和字段; jdbc-type 可以直接填数字(jdbc.Types没有明显区分的类型)--\u003e\n\t\t\u003csql-type table-field=\"sqltoy_jsontype_showcae.staff_set\" native-types=\"json\" jdbc-type=\"1021\" java-type=\"List\u0026lt;StaffInfoVO\u0026gt;\" import-types=\"com.sqltoy.quickstart.vo.StaffInfoVO\" /\u003e\n\t\u003c/type-mapping\u003e\n\u003c/quickvo\u003e\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsagframe%2Fsagacity-quickvo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsagframe%2Fsagacity-quickvo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsagframe%2Fsagacity-quickvo/lists"}