{"id":16640301,"url":"https://github.com/yuzd/ktormgen","last_synced_at":"2025-09-10T04:06:13.430Z","repository":{"id":97071705,"uuid":"250786903","full_name":"yuzd/ktormgen","owner":"yuzd","description":"dbmodels code gen for ktorm","archived":false,"fork":false,"pushed_at":"2021-11-30T23:58:54.000Z","size":96,"stargazers_count":25,"open_issues_count":0,"forks_count":5,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-09T14:34:12.718Z","etag":null,"topics":["codegen","ktorm"],"latest_commit_sha":null,"homepage":null,"language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/yuzd.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2020-03-28T12:16:16.000Z","updated_at":"2025-03-29T10:00:49.000Z","dependencies_parsed_at":null,"dependency_job_id":"64e5324b-a868-40e9-b82d-87e45e728e10","html_url":"https://github.com/yuzd/ktormgen","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/yuzd/ktormgen","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yuzd%2Fktormgen","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yuzd%2Fktormgen/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yuzd%2Fktormgen/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yuzd%2Fktormgen/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yuzd","download_url":"https://codeload.github.com/yuzd/ktormgen/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yuzd%2Fktormgen/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274411130,"owners_count":25280066,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-10T02:00:12.551Z","response_time":83,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["codegen","ktorm"],"created_at":"2024-10-12T07:08:24.807Z","updated_at":"2025-09-10T04:06:13.396Z","avatar_url":"https://github.com/yuzd.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"### [ktorm框架](https://github.com/vincentlauvlwj/Ktorm)代码生成器\n\n代码生成器支持的数据库有\n\n- Mysql\n- Sqlserver\n\n### 官方下载地址：https://plugins.jetbrains.com/plugin/14033\n\n### 如果插件在jetbrains下载失败可以试试从百度网盘 插件下载地址：\n\n链接：https://pan.baidu.com/s/1XQ8MMuglz1gU_x4Hjnn0wg\n提取码：r861\n\n### 以下是手动下载插件后手动安装插件教程\n\n##### 打开idea-\u003eFile-\u003eSettings...\n\n![image](https://images4.c-ctrip.com/target/zb0n1e000001fr6eq9640.png)\n\n##### 选择 plugins 本地选择下载的zip文件\n\n![image](https://images4.c-ctrip.com/target/zb0p1e000001fr92h36F3.png)\n\n![image](https://images4.c-ctrip.com/target/zb021e000001fz753AD11.png)\n\n![image](https://images4.c-ctrip.com/target/zb0b1e000001fuiaiE9BF.png)\n\n##### 重启idea即可\n\n### 重要\n\n### 如何使用插件生成ktorm的dbmodes代码\n\n##### 打开项目 在项目的 resources下面新建一个 json格式的文件，名称自己随便命名，但是一定得是.json后缀的文件\n\n如下图\n\n![image](https://images4.c-ctrip.com/target/zb091e000001fuiuv5945.png)\n\n## Ktorm的Json内容模板：\n\n```json\n{\n  \"Type\": \"Mysql\",\n  \"OutPutFolder\": \"../java/dal\",\n  \"IsKotlin\": true,\n  \"CamelCase\": true,\n  \"KtormVersionNew\": true,\n  \"NamespaceName\": \"DbModel\",\n  \"ConnectionString\": \"Server=localhost;Port=53306;Database=antmgr;Uid=root;Pwd=123456;charset=utf8;SslMode=none\",\n  \"TableFilter\": [],\n  \"SetFkList\": [\n    \"system_users,RoleTid,system_role,Tid\"\n  ]\n}\n```\n\n## Ktorm生成的Json字段说明\n\n字段 | 说明\n---|---\nType | 支持 mysql 和 sqlserver (sqlserver的话支持在后面指定版本号：sqlserver2000, sqlserver2005,sqlserver2008,sqlserver2012,sqlserver2017，如果不指定的话 sqlserver = sqlserver2008)\nOutPutFolder| 生成的代码保存在本机的哪个文件夹(可以使用绝对路径和相对路径) 相对路径是相对于你选择的json文件 例如(../java)\nIsKotlin| 需要设置为true\nKtormVersionNew| 如果用的是新版本的ktorm的话需要设置为true(因为ktorm更改了namespace)\nCamelCase| 生成Dao和Model的时候可以把字段名称下划线转驼峰\nNamespaceName| 指定 package 名称\nConnectionString| db连接字符串\nTableFilter| 表名称的string数组，如果指定了只会生成特定的表的代码 ， system_% -》代表只生成system_开头的表\nSetFkList| 外键关系设置(可以是非物理的外键)有4个参数逗号隔开分别是，A表的哪个字段关联B表的哪个字段，关联关系是1:1\n\n### 测试演示\n\n![image](https://images4.c-ctrip.com/target/zb0w1e000001fy5pm2190.gif)\n\n### 生成的代码结构\n\n![image](https://images4.c-ctrip.com/target/0zb4f120008c5nmub791E.png)\n\n#### 1.dbmodels\n\n是db里面的表，一张表对应这个目录下的一个kotlin文件\n\n#### 2.dao是表的字段类型映射定义\n\n一个model对应一个dao\n\n#### 3.Tables\n\ndataBase的扩展方法，只需要拿到database 就可以拿到表对象进行db操作。 可以参考下面的代码。\n\n```kotlin\n   val database = Database.connect(\n    \"jdbc:mysql://localhost:3306/antmgr?user=root\u0026password=123456\u0026useSSL=false\",\n    logger = ConsoleLogger(threshold = LogLevel.DEBUG)\n)\n\n//默认自动join是关闭的\nval user = database.systemUsers.filter { it.Tid eq 2 }.firstOrNull()\nprintln(user?.SystemRole)\n//按照下面的方式开启自动join查询\nval user2 = database.systemUsers.joinReferencesAndSelect().filter { it.Tid eq 2 }.firstOrNull()\nprintln(user2?.SystemRole)\n\n//筛选\nval systemMenu = database.systemMenus.filter { (it.IsActive) and (it.Name eq \"yuzd\") }.firstOrNull()\nprintln(systemMenu)\n\n//新增\ndatabase.systemMenus.insert {\n    set(it.Name, \"test\")\n    set(it.IsActive, false)\n}\n\n//修改\ndatabase.systemMenus.update {\n    set(it.IsActive, true)\n    where { it.Name eq \"test\" }\n}\n\n//删除\ndatabase.systemMenus.delete {\n    it.Name eq \"test\"\n}\n\n```\n\n更多详细可以参考ktorm框架的文档\nhttps://www.ktorm.org/en/entities-and-column-binding.html\n\n![image](https://images4.c-ctrip.com/target/0zb5d120008od7nor3A7E.png)\n\n### 2021-11-27 Version2.4\n1. 优化遇到错误的信息展示\n\n![image](https://dimg04.c-ctrip.com/images/0v54712000958okfs31A2.png)\n\n2. 支持sqlserver\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyuzd%2Fktormgen","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyuzd%2Fktormgen","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyuzd%2Fktormgen/lists"}