{"id":30817889,"url":"https://github.com/zhangchuangiie/SimpleMybatis","last_synced_at":"2025-09-06T09:10:01.421Z","repository":{"id":62475750,"uuid":"478790337","full_name":"zhangchuangiie/SimpleMybatis","owner":"zhangchuangiie","description":"一个基于Mybatis封装的类JdbcTemplate风格的ORM工具","archived":false,"fork":false,"pushed_at":"2024-02-02T07:30:44.000Z","size":150,"stargazers_count":681,"open_issues_count":0,"forks_count":42,"subscribers_count":36,"default_branch":"main","last_synced_at":"2024-02-03T03:51:44.592Z","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":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zhangchuangiie.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}},"created_at":"2022-04-07T01:55:05.000Z","updated_at":"2024-01-08T10:03:33.000Z","dependencies_parsed_at":"2023-12-08T07:41:37.465Z","dependency_job_id":"8d01b76b-8f0c-4700-9c02-5cd28eac2bc9","html_url":"https://github.com/zhangchuangiie/SimpleMybatis","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/zhangchuangiie/SimpleMybatis","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zhangchuangiie%2FSimpleMybatis","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zhangchuangiie%2FSimpleMybatis/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zhangchuangiie%2FSimpleMybatis/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zhangchuangiie%2FSimpleMybatis/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zhangchuangiie","download_url":"https://codeload.github.com/zhangchuangiie/SimpleMybatis/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zhangchuangiie%2FSimpleMybatis/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273881006,"owners_count":25184576,"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-06T02:00:13.247Z","response_time":2576,"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":[],"created_at":"2025-09-06T09:02:40.040Z","updated_at":"2025-09-06T09:10:01.409Z","avatar_url":"https://github.com/zhangchuangiie.png","language":"Java","funding_links":[],"categories":["数据库开发"],"sub_categories":[],"readme":"# SimpleMybatis（Mybatis通用Mapper）\n一个基于Mybatis封装的类JdbcTemplate风格的ORM工具，数据库开发效率神器\n\n现有的ORM框架使用起来都依赖配套的实体类和配置文件，对多表关联支持很不友好，对DDL和DCL语句支持极差，SimpleMybatis实现了一种极其简单高效的SQL\u003c——\u003eJSON映射模式\n\n\n![示意图](https://user-images.githubusercontent.com/40593174/227458541-7904246e-a51e-45c7-8ff3-c51c0c47594b.png)\n\n![e7b36012f25e6bafcb6b7bf702aa95c](https://github.com/zhangchuangiie/SimpleMybatis/assets/40593174/9879c5b3-2bd0-4c0f-bc69-1a7aee4fa2ab)\n\n\n## 典型示例：\n```Java List\u003cLinkedHashMap\u003cString, Object\u003e\u003e resultList =  baseMapper.select(\"SELECT * FROM user where 1=1 and name=? and password=? and number=?  ORDER BY ? asc LIMIT 1. 2,2\",name,password,number,\"time\");\n\nlong resultCount =  baseMapper.count(\"SELECT count(*) FROM user where 1=1 and name=? and password=? and number=?\",name,password,number);\n\nLinkedHashMap\u003cString, Object\u003e resultObject =  baseMapper.get(\"SELECT  * FROM user where  id=?\",id1);\n\nint result = baseMapper.insert(\"INSERT INTO user(name,password,number,time) VALUES(?,?,?,?)\",name,password,number,currentDateString);\n\nint result = baseMapper.update(\"update user set name=?,password=?,number=? where id=?\",name,password,number,id1);\n\nint result = baseMapper.delete(\"delete from user where id=?\",id);\n\nint result=  baseMapper.execute(\"Truncate Table log\");\n```\n\n## 特点：\n1. 无需为具体库表建立实体类和Mapper，统一使用BaseMapper即可\n2. 采用弱类型返回结果集，这个返回值无需任何转换可以直接在SpringBoot的Controller里面做响应（一般也不需要Service）\n3. 将controller、entity、mapper、service、resources简化为只要在controller接口里面直接写逻辑，每一组接口只要写一个java文件\n4. 对DDL，DCL也很好的支持，适合大量动态建表的业务\n5. 对复杂的联表查询，聚合查询支持很好，无需任何配置和定义，直接可以执行复杂查询SQL语句\n6. 对存储过程支持友好，支持结果回传\n7. BaseMapper将数据库操作抽象为10种，在JDBC语义和ORM语义间做了平衡，支持日常CRUD操作\n8. 正常直接使用BaseMapper（带BaseMapperAspect装饰器）版本，另有一个单文件集成的原生JDBCUtil版本，两个版本接口的基本形式都是一样的\n9. 支持JDBC中?占位符，跟原生JDBC的SQL占位符写法习惯一致，实际的值通过后面的可变参数传递\n10. 在CRUDTask文件中可以查看调用示例\n11. APITemplate文件是典型的CRUD接口逻辑代码，结合SQLBuilderUtil可以实现简单SQL语句的自动生成，结合AutoValueFromSqlUtil可以实现接口参数的自动填充\n\n## 使用方式：\n1. **试用方式:** 只需要集成1个BaseMapper文件即可，集成和使用方式跟正常的Mapper相同（在不使用?占位符和不需要时间格式化的情况下，跟正常模式接口完全一样）\n2. **正常方式:** 集成2个BaseMapper\\*文件即可，集成和使用方式跟正常的Mapper相同，BaseMapperAspect是装饰器（参数占位符加工和结果集时间格式化）\n3. **备用方式:** 为在没有Mybatis的环境下使用该风格接口，直接用JDBC实现了原生版本，接口跟BaseMapper是一样的，这种方式只需要集成一个JDBCUtil文件即可，这个是单连接版本，对应的连接池版本可以使用JDBCUtilHikari.java\n\n## 接口介绍：\n1. **select：** 所有的结果集查询接口，直接拼SQL查询语句一行代码调用函数即可，返回值就是直接SpringBoot可以响应的格式（当然也可以加工后返回），无需bean，无需新建mapper，支持分组查询，连接查询，子查询，组合查询（UNION），视图查询，各种统计类的查询也直接用这个接口即可，别名as什么SpringBoot响应的json字段就是什么（也就是LinkedHashMap的key）\n2. **count:** 所有的单值计数查询的快捷接口，也可以用于分页接口的总数接口，直接返回就是一个long型的数字，无需任何解析和加工\n3. **get：** 所有的单对象点查询的快捷接口，返回的直接是一个对象（函数返回LinkedHashMap，SpringBoot响应json对象）\n4. **insert：** 所有的插入语句接口，返回值是成功行数\n5. **insertForID：** 所有的插入语句，支持获得被插入数据的主键ID值的版本，返回值是成功行数，主键ID值在map.id\n6. **update：** 所有的更新语句接口，返回值是成功行数\n7. **delete：** 所有的删除语句接口，返回值是成功行数\n8. **execute：** 所有的执行语句接口，返回值是成功行数，支持所有的DDL，DCL语句，常用于建库建表，建用户，赋权等操作\n9. **executeBatch：** 支持批处理的接口，可以一次执行多条语句\n10. **call：** 支持调用存储过程的接口，支持带结果集存储过程，也支持带OUT参数\n\n## 接口列表：\n1. **select：** List\u003cLinkedHashMap\u003cString, Object\u003e\u003e select(String sql,Object ...args)\n2. **count:** long count(String sql,Object ...args)\n3. **get：** LinkedHashMap\u003cString, Object\u003e get(String sql,Object ...args)\n4. **insert：** int insert(String sql,Object ...args)\n5. **insertForID：** int insertForID(String sql,Map map,Object ...args)\n6. **update：** int update(String sql,Object ...args)\n7. **delete：** int delete(String sql,Object ...args)\n8. **execute：** int execute(String sql,Object ...args)\n9. **executeBatch：** int executeBatch(List\u003cString\u003e sql,Object ...args)\n10. **call：** List\u003cLinkedHashMap\u003cString, Object\u003e\u003e call(String sql,Map map,Object ...args)\n\n## 联系人：\n有问题可以联系:zhangchuang@iie.ac.cn\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzhangchuangiie%2FSimpleMybatis","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzhangchuangiie%2FSimpleMybatis","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzhangchuangiie%2FSimpleMybatis/lists"}