{"repo":"cris-xue/mybatisgx","free":true,"listed":false,"github":"https://github.com/cris-xue/mybatisgx","clone":"git clone https://github.com/cris-xue/mybatisgx.git","description":"一个 基于 MyBatis 的增强型 ORM 框架","language":"Java","stars":14,"topics":["mybatis","mybatis-spring","mysql","oracle","orm","orm-framework","postgresql","toolkit","mybatisgx"],"license":"Apache-2.0","category":"databases-storage","readme_excerpt":"MyBatisGX 为长期演进而设计的 MyBatis 增强框架 —— 让代码不被数据库腐蚀 社区交流 欢迎交流 MyBatisGX 使用问题、ORM 设计与 SQL 架构实践。 微信：xcc137396549 备注：进 MyBatisGX 群 为什么诞生：防腐 MyBatisGX 不是为了解决\"怎么操作数据库\"——ORM 早就不是难题。它解决的是一个 工程化问题 ： 代码如何不被数据库腐蚀。 第一周，你接到需求：用户列表，按名称和状态筛选。10 分钟，测试通过，提交： 第三个月，需求迭代了 5 次：加时间范围、加角色、加部门、加标签、加手机号模糊搜索。你的 Service 方法变成了 200 行 Wrapper 拼装。 数据库字段名、查询逻辑像藤蔓一样爬满了业务代码 ——代码被腐蚀了。 MyBatisGX 让这一切回到它该在的位置： 持久层逻辑归于 DAO，业务逻辑留在 Service ——这就是防腐。而 0.3.0 的 MGXSQL 则更进一步，把这种保护延伸到 SQL 文本本身（见下文）。 快速开始 1. 添加依赖 Spring Boot 3.x Spring Boot 2.x Spring Boot 4.x 2. 配置扫描路径 3. 创建实体类 4. 创建 DAO 接口 5. 在 Service 中使用 核心能力 🎯 DAO 层收敛 持久层逻辑不泄露到 Service 层。框架强制分层： Service 只表达业务，查询逻辑全部收敛到 DAO ——这是防腐的架构保障，不需要靠团队自觉。 📝 三种查询方式总览 MyBatisGX 提供三种由易到难的查询方式，它们最终汇入 同一条统一链路 （见下文架构）： 方式 适用场景 示例 ------ --------- ------ 方法名查询 常规查询，零学习成本 findByNameLikeAndAgeGeAndStatus(...) QueryEntity 动态查询 条件可变的查询 userDao.findList(query) ，null 字段自动忽略 @Statement 手写 MGXQL 复杂查询，方法名表达不了 @Statement(\"select u. from User u left join UserDetail ud on u = ud ...\") 方法名查询 ——像 JPA 一样，通过方法名自动生成 SQL： QueryEntity 动态查询 ——类型安全的动态查询对象： @Statement 手写 MGXQL ——复杂查询直接用对象查询语言表达（对应实体对象，而非表名）： 🔧 渐进式控制 从零配置到完全掌控，Service 层始终纯净： XML 覆盖时 调用方零改动 ——DAO 接口签名不变，Service 代码不变： XML 优先级最高，永远不会被覆盖。 🔗 声明式关联查询 类似 JPA，但提供四种抓取模式，性能可控： 四种抓取模式 ： - SIMPLE ：简单抓取模式，会造成 N+1 问题 - BATCH ：批量模式，对单张表进行批量查询再组装数据，用于解决 N+1 问题。会发出 1+m 张表的 SQL（默认模式） - JOIN ：连接模式，采用 1+1 模式，第一级单表查询获取 key 后，第二条 SQL 无限 JOIN 直到不存在关联实体。避免分页时的数据爆炸问题 - NONE ：不进行关联查询抓取 🛠️ 工程能力 - 逻辑删除 ： @LogicDelete 注解字段， delete 自动转 UPDATE - 乐观锁 ： @Version 注解字段，更新时自","default_branch":null,"files":null,"tree":[],"storefront":"/r/cris-xue","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/cris-xue/mybatisgx/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}