{"id":23272717,"url":"https://github.com/handsomestwei/mybatis-mapper2sql","last_synced_at":"2026-03-01T23:02:50.858Z","repository":{"id":226795377,"uuid":"769663052","full_name":"handsomestWei/mybatis-mapper2sql","owner":"handsomestWei","description":"提取mybatis mapper xml sql，自动mock sql参数","archived":false,"fork":false,"pushed_at":"2025-08-06T08:37:24.000Z","size":69,"stargazers_count":31,"open_issues_count":0,"forks_count":4,"subscribers_count":2,"default_branch":"main","last_synced_at":"2026-01-14T07:40:32.242Z","etag":null,"topics":["gennerator","java","mapper","mock","mybatis","sql","sqlast"],"latest_commit_sha":null,"homepage":"","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/handsomestWei.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":"2024-03-09T17:51:43.000Z","updated_at":"2025-08-13T00:21:56.000Z","dependencies_parsed_at":"2024-03-14T16:45:27.306Z","dependency_job_id":"2bacd89f-d17b-497f-bce5-2c02c1a1c9b7","html_url":"https://github.com/handsomestWei/mybatis-mapper2sql","commit_stats":null,"previous_names":["handsomestwei/mybatis-mapper2sql"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/handsomestWei/mybatis-mapper2sql","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/handsomestWei%2Fmybatis-mapper2sql","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/handsomestWei%2Fmybatis-mapper2sql/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/handsomestWei%2Fmybatis-mapper2sql/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/handsomestWei%2Fmybatis-mapper2sql/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/handsomestWei","download_url":"https://codeload.github.com/handsomestWei/mybatis-mapper2sql/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/handsomestWei%2Fmybatis-mapper2sql/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29987656,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-01T22:42:38.399Z","status":"ssl_error","status_checked_at":"2026-03-01T22:41:51.863Z","response_time":124,"last_error":"SSL_read: 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":["gennerator","java","mapper","mock","mybatis","sql","sqlast"],"created_at":"2024-12-19T19:18:37.293Z","updated_at":"2026-03-01T23:02:50.853Z","avatar_url":"https://github.com/handsomestWei.png","language":"Java","readme":"# mybatis-mapper2sql\n提取mybatis mapper xml sql，自动mock sql参数。\n\n## 简介\n+ 快速启动，`只需提供xml文件`，`无需依赖环境加载dao层class`，无需把整个屎山项目跑起来。\n+ sql解析提取基于原生`mybatis`框架，确保稳定和可靠性。\n+ 自动mock生成sql参数，尽可能。\n+ 支持扫描文件目录批量提取，生成sql文件。\n+ 支持配置jdbc连接，自动执行sql，记录执行是否异常。\n\n适用于`sql预审`、`数据库迁移适配`等场景。\n\n## 配套工具\n+ Intellij Plugin插件 [mybatis-mapper2sql-plugin](https://github.com/handsomestWei/mybatis-mapper2sql-plugin)：[插件市场下载](https://plugins.jetbrains.com/plugin/25584-mybatis-mapper2sql/)\n+ MCP server [mybatis-mapper2sql-mcp-server](https://github.com/handsomestWei/mybatis-mapper2sql-mcp-server)\n\n## 使用示例\n[参考](/src/test/java/com/wjy/mapper2sql/MainTest.java)\n\n### 保留参数占位符\n#### 代码示例\n```java\n// 指定扫描的mapper文件路径，也可以是整个项目\nString resource = \"D:\\\\test-mapper.xml\";\n\n// 提取sql，保留sql里的?占位符\nList\u003cMapperSqlInfo\u003e infos = SqlUtil.parseMapper(resource, DbType.postgresql, false);\n\n// 结果输出到控制台\nfor (MapperSqlInfo mapperSqlInfo : infos) {\n    OutPutUtil.toStdOut(mapperSqlInfo);\n}\n```\n#### 输出结果示例\n```sql\n---namespace=[com.xxx.dao.TestDao], dbType=[postgresql], file=[D:\\test-mapper.xml]\n\n---id=[selectByParam], testResult=[unknown], testMsg=[]\nSELECT d_id, index_code\nFROM tb_xxx\nWHERE create_time IS NOT NULL\n\tAND index_code IN (?)\nORDER BY d_id DESC\nLIMIT ? OFFSET (? - 1) * ?;\n\n---id=[delete], testResult=[unknown], testMsg=[]\nDELETE FROM tb_xxx\nWHERE d_id IN (?);\n```\n### 支持自动mock参数\n#### 使用前提\n+ 方式一：在mapper xml中，使用resultMap标签定义字段名称和jdbcType类型。\n+ 方式二：配置jdbc连接，运行时从表结构动态获取字段和类型，作为xml字段定义信息缺失的补充。\n\n目前支持select语句的参数mock\n\n#### 代码示例\n```java\n// 指定扫描的mapper文件路径，也可以是整个项目\nString resource = \"D:\\\\test-mapper.xml\";\n\n// 提取sql，自动mock参数\n// 字段信息用于类型推断和参数mock：优先解析在mapper xml文件的resultMap标签定义的字段信息\n// 如果配置了jdbc连接，且连接可用，则运行时从表结构动态获取字段和类型，作为字段定义信息缺失的补充\nJdbcConnProperties properties = new JdbcConnProperties(jdbcDriver, urlString, userName, password);\nList\u003cMapperSqlInfo\u003e infos = SqlUtil.parseMapper(resource, DbType.postgresql, true, properties);\n// List\u003cMapperSqlInfo\u003e infos = SqlUtil.parseMapper(resource, DbType.postgresql, true);\n\n// 结果输出到控制台\nfor (MapperSqlInfo mapperSqlInfo : infos) {\n    OutPutUtil.toStdOut(mapperSqlInfo);\n}\n```\n#### 输出结果示例\n```sql\n---file=[test-mapper.xml], dbType=[postgresql], namespace=[com.xxx.dao.TestDao]\n\n---id=[selectByParam], testResult=[unknown], testMsg=[]\nSELECT d_id, index_code\nFROM tb_xxx\nWHERE create_time IS NOT NULL\n\tAND index_code IN ('46af')\nORDER BY d_id DESC\nLIMIT 4 OFFSET (0 - 1) * 8;\n\n---id=[delete], testResult=[unknown], testMsg=[]\nDELETE FROM tb_xxx\nWHERE d_id IN ('474e');\n```\n### 支持自动执行sql\n#### 使用前提\n在工程中，添加对应jdbc驱动依赖。\n注意：mock参数后，运行时可能会命中部分更新删除sql，影响数据库数据。\n\n#### 代码示例\n```java\n// 指定扫描的文件夹路径，可以是整个项目\nString resource = \"D:\\\\xxxProject\";\n// 指定输出目录\nString outPutDir = \"D:\\\\xxxProject-sql\";\n// 配置jdbc连接，sql测试用\nJdbcConnProperties properties = new JdbcConnProperties(jdbcDriver, urlString, userName, password);\n\n// 提取sql，自动mock参数，自动执行sql，记录执行结果\nList\u003cMapperSqlInfo\u003e infos = SqlUtil.parseMapperAndRunTest(resource, DbType.postgresql, properties);\n\n// 结果输出到目录下文件\nOutPutUtil.toFile(outPutDir, infos);\n```\n\n## 附：命令行方式使用\n使用jar方式运行，部署和使用更便捷。\n\n### 基本用法\n注意：依赖的jar包放置在同级目录的`lib`文件夹内。运行时的jdbc驱动也需要手动放置到该文件夹内。\n```bash\n# 查看帮助信息\njava -jar mapper2sql-x.y.z.jar --help\n\n# 使用properties文件定义\njava -jar mapper2sql-x.y.z.jar --properties config.properties\n```\n\n### 命令行参数说明\n- `-p, --properties`: 配置文件路径\n- `-w, --work-dir`: 工作目录（扫描mapper XML文件）\n- `-o, --output-dir`: 输出目录\n- `-t, --db-type`: 数据库类型（postgresql, mysql, oracle等）\n- `-m, --mock`: 启用参数模拟（默认true）\n- `--db-driver`: JDBC驱动类名\n- `--jdbc-url`: JDBC连接URL\n- `--db-user`: 数据库用户名\n- `--db-password`: 数据库密码\n- `--test`: 执行SQL测试\n- `-h, --help`: 显示帮助信息\n- `-V, --version`: 显示版本信息\n\n### Properties文件配置示例\n[参考](/src/main/resources/mapper2sql.properties)\n\n## 附：集成方式依赖配置\n将mybatis-mapper2sql集成到其他工程。\npom.xml增加依赖\n```\n\u003cdependency\u003e\n    \u003cgroupId\u003ecom.wjy\u003c/groupId\u003e\n    \u003cartifactId\u003emapper2sql\u003c/artifactId\u003e\n    \u003cversion\u003e${last.version}\u003c/version\u003e\n\u003c/dependency\u003e\n```\nmaven setting.xml servers标签增加一组git仓库下载配置\n```\n\u003cserver\u003e\n    \u003cid\u003emybatis-mapper2sql\u003c/id\u003e\n    \u003cusername\u003ehandsomestWei\u003c/username\u003e\n\t\u003c!-- read:packages PAT, you need use AES decrypt with key handsomestWei --\u003e\n    \u003cpassword\u003eU2FsdGVkX1/0nXhVlZqZtTu7TPfm79znYQvarNZM/BF/nU6dx2FGwKfez62X1D78\nNA4KK30oSplZVJ5+GdvKTA==\u003c/password\u003e\n\u003c/server\u003e\n```\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhandsomestwei%2Fmybatis-mapper2sql","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhandsomestwei%2Fmybatis-mapper2sql","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhandsomestwei%2Fmybatis-mapper2sql/lists"}