{"id":19311235,"url":"https://github.com/itcraft-cn/xbatis2sql","last_synced_at":"2025-08-31T15:05:29.419Z","repository":{"id":63549594,"uuid":"568017211","full_name":"itcraft-cn/xbatis2sql","owner":"itcraft-cn","description":"collect sql statements from iBATIS sqlmap files / MyBatis mapper files","archived":false,"fork":false,"pushed_at":"2023-08-15T01:36:00.000Z","size":225,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-05-30T22:27:50.860Z","etag":null,"topics":["ibatis","mybatis","rust","sql"],"latest_commit_sha":null,"homepage":"","language":"Rust","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/itcraft-cn.png","metadata":{"files":{"readme":"README.cn.md","changelog":"ChangeLog.md","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}},"created_at":"2022-11-19T07:19:12.000Z","updated_at":"2025-05-21T05:09:34.000Z","dependencies_parsed_at":"2023-11-14T14:21:18.528Z","dependency_job_id":"2bb34ba7-d1b5-4726-b38c-6a8754e42a91","html_url":"https://github.com/itcraft-cn/xbatis2sql","commit_stats":null,"previous_names":["hellyguo/xbatis2sql"],"tags_count":14,"template":false,"template_full_name":null,"purl":"pkg:github/itcraft-cn/xbatis2sql","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itcraft-cn%2Fxbatis2sql","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itcraft-cn%2Fxbatis2sql/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itcraft-cn%2Fxbatis2sql/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itcraft-cn%2Fxbatis2sql/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/itcraft-cn","download_url":"https://codeload.github.com/itcraft-cn/xbatis2sql/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itcraft-cn%2Fxbatis2sql/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265872354,"owners_count":23842164,"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","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":["ibatis","mybatis","rust","sql"],"created_at":"2024-11-10T00:28:15.662Z","updated_at":"2025-08-31T15:05:29.400Z","avatar_url":"https://github.com/itcraft-cn.png","language":"Rust","readme":"# xbatis2sql\n\n[英文版本](README.md)\n\n`xbatis2sql`，用来抽取散落在各个 `xml` 文件中的 `sql`，供集中进行后续处理。\n\n## 安装方法\n\n```shell\ncargo install xbatis2sql\n```\n\n## 用法\n\n```verilog\n# xbatis2sql -h\nUsage: xbatis2sql [-i|-m] -t [Oracle/MySQL] -s ... -o ... [-e] [-n 10] [-l 1000]\n\nOptions:\n    -i, --ibatis        try to parse iBATIS sqlmap files\n    -m, --mybatis       try to parse MyBatis mapper files\n    -t, --type DB       db type\n    -s, --src SRC       source directory\n    -o, --output OUTPUT output directory\n    -e, --explain       generate explain sql\n    -n, --num TIMES     times to replace \u003cinclude\u003e tag, default is 10\n    -l, --limit LIMIT   sql length limit\n    -v, --version       show version information\n    -h, --help          print this help menu\n```\n\n### iBATIS\n\n```shell\nxbatis2sql -i -t Oracle -s /java/use_ibatis_proj/src -o /tmp\n```\n\n或\n\n```shell\nxbatis2sql --ibatis --type Oracle --src /java/use_ibatis_proj/src --output /tmp\n```\n\n执行后可获得文件： `/tmp/result.sql`。\n\n### MyBatis\n\n```shell\nxbatis2sql -m -t Oracle -s /java/use_mybatis_proj/src -o /tmp\n```\n\n或\n\n```shell\nxbatis2sql --mybatis --type Oracle --src /java/use_mybatis_proj/src --output /tmp\n```\n\n执行后可获得文件： `/tmp/result.sql`。\n\n## 样例\n\n### MyBatis\n\n[mapper-demo.xml](./test_data/mapper-demo.xml) 将转化为 `result.sql`。\n\n**`result.sql`**\n\n```sql\nSELECT \"XML -FILE: ./test_data/mapper-demo.xml\" AS XML_FILE FROM DUAL;\nSELECT \"STAT -ID: insert\" AS STAT_ID FROM DUAL;\nINSERT INTO TAB1(A,B,C,D) VALUES (:?,:?,:?,:?);\nSELECT \"STAT -ID: insert.selectKey\" AS STAT_ID FROM DUAL;\nSELECT 1 FROM DUAL;\nSELECT \"STAT -ID: select\" AS STAT_ID FROM DUAL;\nSELECT * FROM TAB1 WHERE COLUMN1 IN ( :?);\nSELECT \"STAT -ID: insert2\" AS STAT_ID FROM DUAL;\nINSERT INTO TAB2 ( ID)VALUES ( :?);\nSELECT \"STAT -ID: select2\" AS STAT_ID FROM DUAL;\nSELECT COLUMN1, COLUMN2 , (SELECT 1 FROM DUAL) FROM TAB3 WHERE COLUMN1 = :? ORDER BY COLUMN2 DESC;\nSELECT \"STAT -ID: update\" AS STAT_ID FROM DUAL;\nUPDATE TAB1 SET COLUMN1 = :? WHERE COLUMN1 = :?;\nSELECT \"STAT -ID: delete\" AS STAT_ID FROM DUAL;\nDELETE FROM TAB1 WHERE COLUMN1 = :? AND COLUMN2 = :?;\n```\n\n### iBATIS\n\n[sqlmap-demo.xml](./test_data/sqlmap-demo.xml) 将转化为 `result.sql`。\n\n**`result.sql`**\n\n```sql\nSELECT \"XML -FILE: ./test_data/sqlmap-demo.xml\" AS XML_FILE FROM DUAL;\nSELECT \"STAT -ID: select\" AS STAT_ID FROM DUAL;\nSELECT COUNT(1) , (SELECT 1 FROM DUAL) FROM __REPLACE_SCHEMA__.TAB1 WHERE COLUMN1 = 'BALABALA' AND COLUMN2 = :?;\nSELECT \"STAT -ID: update\" AS STAT_ID FROM DUAL;\nUPDATE __REPLACE_SCHEMA__.TAB2 SET COLUMN2 = :? WHERE COLUMN1 = :?;\nSELECT \"STAT -ID: delete\" AS STAT_ID FROM DUAL;\nDELETE FROM __REPLACE_SCHEMA__.TAB1 WHERE COLUMN1 = :?;\nSELECT \"STAT -ID: insert\" AS STAT_ID FROM DUAL;\nINSERT INTO __REPLACE_SCHEMA__.TAB1 (COLUMN1, COLUMN2, COLUMN3, COLUMN4, COLUMN5) VALUES (:?, :?, :?, :?, :?);\n```\n\n\u003e 如果是 `MySQL` 模式，`:?` 改为 `@1`。\n\n## 更新记录\n\n见 [ChangeLog](ChangeLog.md)\n\n## 感谢\n\n感谢 [mybatis-mapper-2-sql](https://github.com/actiontech/mybatis-mapper-2-sql) / [sqle](https://github.com/actiontech/sqle)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fitcraft-cn%2Fxbatis2sql","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fitcraft-cn%2Fxbatis2sql","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fitcraft-cn%2Fxbatis2sql/lists"}