依星源码资源网,依星资源网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

【好消息,好消息,好消息】VIP会员可以发表文章赚积分啦 !
查看: 98|回复: 0

MyBatis 增强工具包

[复制链接] 主动推送

1万

主题

1万

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
15413
发表于 2025-4-9 10:59:33 | 显示全部楼层 |阅读模式
MyBatis 增强工具包
实现了便捷的单表 CRUD,各种自定义条件查询,以及物理分页查询,像使用 PHP 操作数据库一样简单。
  • 无侵入:在 Mybatis 的基础上进行扩展,只是内置了简单的CRUD, 并增强了查询功能,并未修改原生 API,支持所有 Mybatis 原生的特性,不会影响项目现有的 Mybatis 架构。
  • 功能精简:简单到只有你需要的功能,又强大到刚好能满足你的绝大多数业务需求。她不像其他 Mybatis 中间件那么强大,每种功能都提供了各种实现 API,她每种功能都只提供了一种(最优)实现,让你不用还去考虑使用哪个 API 来实现当前的功能,体验不用选择的幸福。如果你刚好像我一样也有选择困难症的话,那她简直是为你量身订做。
  • 内置分页插件:基于Mybatis物理分页,开发者无需关心具体操作,配置好插件之后,写分页等同于写基本List查询
  • 接入简单:内置提供了 spring-boot-starter,让你 1 分钟接入 SpringBoot 项目。
  1. <dependency>
  2.   <groupId>org.rockyang</groupId>
  3.   <artifactId>mybatis-kits-core</artifactId>
  4.   <version>1.5.2</version>
  5. </dependency>
复制代码
SpringBoot 项
  1. // 影响行数
  2. int affactRows = 0;
  3. // 初始化 User 实体对象, 如果是非自增ID需要初始化ID
  4. // 系统有内置的分布式 ID 生成工具
  5. User user = new User(userMapper.getNewId());

  6. // 插入 User (如果是自增ID的话,插入成功会自动回写ID到实体类)
  7. user.setName("Rock");
  8. affactRows = userMapper.add(user);

  9. // 更新 User
  10. user.setAge(18);
  11. affactRows = userMapper.update(user);
  12. // 你也可以这样
  13. affactRows = userMapper.updateAll(user);
  14. /*
  15.    注意:update() 方法只更新 User 实体的非 null 字段,是增量更新
  16.    而 updateAll() 会更新所有字段,包括值为 null 的字段
  17.    
  18.    应用需求:比如你知道用户ID,只想更新 Name 字段,常规方法是下面这样的
  19. */
  20. String userId = "abc";
  21. User user = userMapper.get(userId);
  22. user.setName("New name");
  23. userMapper.updateAll(user);
  24. // 或则你也可以这样实现
  25. User user = new User(userId);
  26. user.setName("New name");
  27. userMapper.update(user); // 这样可以少一次查询
  28. // 所以如果你就是要把某个字段更新成 null, 请使用 updateAll()

  29. // 查询 User
  30. User userItem = userMapper.get(user.getId());
  31. // 查询ID > 100 所有用户列表
  32. List<User> userList = userMapper.searchByConditions(
  33.         new Conditions.gt("id", 100)
  34. );
  35. // 如果只想取列表中的一条
  36. User u = userMapper.getByCondition(new Conditions.gt("id", 100));

  37. // 删除 User
  38. affactRows = userMapper.delete(user.getId());
  39. // 删除 id > 100 and id < 200 的所有用户
  40. Conditions condi = new Conditions();
  41. condi.gt("id", 100).lt("id", 200);
  42. affactRows = UserMapper.deleteByConditions(condi);
复制代码

目接入方式

  1. <dependency>
  2.   <groupId>org.rockyang</groupId>
  3.   <artifactId>mybatis-kits-spring-boot-starter</artifactId>
  4.   <version>1.5.2</version>
  5. </dependency>
复制代码
小试牛刀
假设我们已存在一张 User 表,且已有对应的实体类 User,实现 User 表的 CRUD 操作我们只需创建一个对应的 Mapper 接口就行了。
  1. public interface UserMapper extends BaseMapper<User> { }
复制代码
基本 CRUD 操作
  1. // 影响行数
  2. int affactRows = 0;
  3. // 初始化 User 实体对象, 如果是非自增ID需要初始化ID
  4. // 系统有内置的分布式 ID 生成工具
  5. User user = new User(userMapper.getNewId());

  6. // 插入 User (如果是自增ID的话,插入成功会自动回写ID到实体类)
  7. user.setName("Rock");
  8. affactRows = userMapper.add(user);

  9. // 更新 User
  10. user.setAge(18);
  11. affactRows = userMapper.update(user);
  12. // 你也可以这样
  13. affactRows = userMapper.updateAll(user);
  14. /*
  15.    注意:update() 方法只更新 User 实体的非 null 字段,是增量更新
  16.    而 updateAll() 会更新所有字段,包括值为 null 的字段
  17.    
  18.    应用需求:比如你知道用户ID,只想更新 Name 字段,常规方法是下面这样的
  19. */
  20. String userId = "abc";
  21. User user = userMapper.get(userId);
  22. user.setName("New name");
  23. userMapper.updateAll(user);
  24. // 或则你也可以这样实现
  25. User user = new User(userId);
  26. user.setName("New name");
  27. userMapper.update(user); // 这样可以少一次查询
  28. // 所以如果你就是要把某个字段更新成 null, 请使用 updateAll()

  29. // 查询 User
  30. User userItem = userMapper.get(user.getId());
  31. // 查询ID > 100 所有用户列表
  32. List<User> userList = userMapper.searchByConditions(
  33.         new Conditions.gt("id", 100)
  34. );
  35. // 如果只想取列表中的一条
  36. User u = userMapper.getByCondition(new Conditions.gt("id", 100));

  37. // 删除 User
  38. affactRows = userMapper.delete(user.getId());
  39. // 删除 id > 100 and id < 200 的所有用户
  40. Conditions condi = new Conditions();
  41. condi.gt("id", 100).lt("id", 200);
  42. affactRows = UserMapper.deleteByConditions(condi);
复制代码


分页查询(所有分页均为物理分页)
  1. // 查询所有记录并分页
  2. Page<User> page = new Page<>();
  3. page.setPageSize(10);
  4. page = userMapper.search(page);

  5. for (User user : page.getResults()) {
  6.         logger.info("结果:{}",user);
  7. }

  8. // 按照条件查询分页
  9. Conditions condi = new Conditions();
  10. condi.eq("name", "Rock");
  11. Page<User> page = new Page<>();
  12. page.setPageSize(10);
  13. page = userMapper.searchByConditions(page, condi);

  14. for (User user : page.getResults()) {
  15.         logger.info("结果:{}",user);
  16. }
复制代码
条件组合
MyBatis-Kits 的 Conditions 查询异常强大,几乎可以满足你单表查询的所有需求。
先来个简单的:
  1. Conditions conditions = new Conditions();
  2. conditions.eq("name", "Rock")
  3.     .ge("age", 18)
  4.     .lt("age", 30)
  5.     .ne("address", "Addres_A");
  6. // output: name='Rock' AND age > 18 AND age < 30 AND address != 'Addres_A'
复制代码
再来个稍微复杂一点的:
  1. Conditions conditions = new Conditions();
  2. conditions.add(Restrictions.and(Restrictions.eq("age",18),Restrictions.eq("name","zhangsan")));
  3. conditions.add(Restrictions.or(Restrictions.eq("count",18),Restrictions.eq("count",29)));
  4. // output: ((age=18 AND name='zhangsan') AND (count=18 OR count=29))
复制代码
更多复杂条件查询请参考单元测试 org.rockyang.mybatis.boot.demo.test.plus.ConditionTest
上面的所有功能都是不需要创建 Mapper.xml 文档就可以轻松实现的,如果你需要增加联合查询功能,只需增加相应的 UserMapper.xml,在里面实现就好了。 完全兼容原生 MyBatis 的所有功能。
提取码下载:
文件名称:提取码下载.txt 
下载次数:0  文件大小:16 Bytes  售价:12金钱 [记录]
下载权限: 不限 [购买VIP]   [充值]   [在线充值]   【VIP会员6折;永久VIP4折】
安全检测,请放心下载





相关帖子

扫码关注微信公众号,及时获取最新资源信息!下载附件优惠VIP会员6折;永久VIP4折
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

免责声明:
1、本站提供的所有资源仅供参考学习使用,版权归原著所有,禁止下载本站资源参与商业和非法行为,请在24小时之内自行删除!
2、本站所有内容均由互联网收集整理、网友上传,并且以计算机技术研究交流为目的,仅供大家参考、学习,请勿任何商业目的与商业用途。
3、若您需要商业运营或用于其他商业活动,请您购买正版授权并合法使用。
4、论坛的所有内容都不保证其准确性,完整性,有效性,由于源码具有复制性,一经售出,概不退换。阅读本站内容因误导等因素而造成的损失本站不承担连带责任。
5、用户使用本网站必须遵守适用的法律法规,对于用户违法使用本站非法运营而引起的一切责任,由用户自行承担
6、本站所有资源来自互联网转载,版权归原著所有,用户访问和使用本站的条件是必须接受本站“免责声明”,如果不遵守,请勿访问或使用本网站
7、本站使用者因为违反本声明的规定而触犯中华人民共和国法律的,一切后果自己负责,本站不承担任何责任。
8、凡以任何方式登陆本网站或直接、间接使用本网站资料者,视为自愿接受本网站声明的约束。
9、本站以《2013 中华人民共和国计算机软件保护条例》第二章 “软件著作权” 第十七条为原则:为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬。若有学员需要商用本站资源,请务必联系版权方购买正版授权!
10、本网站如无意中侵犯了某个企业或个人的知识产权,请来信【站长信箱312337667@qq.com】告之,本站将立即删除。
郑重声明:
本站所有资源仅供用户本地电脑学习源代码的内含设计思想和原理,禁止任何其他用途!
本站所有资源、教程来自互联网转载,仅供学习交流,不得商业运营资源,不确保资源完整性,图片和资源仅供参考,不提供任何技术服务。
本站资源仅供本地编辑研究学习参考,禁止未经资源商正版授权参与任何商业行为,违法行为!如需商业请购买各资源商正版授权
本站仅收集资源,提供用户自学研究使用,本站不存在私自接受协助用户架设游戏或资源,非法运营资源行为。
 
在线客服
点击这里给我发消息 点击这里给我发消息 点击这里给我发消息
售前咨询热线
312337667

微信扫一扫,私享最新原创实用干货

QQ|免责声明|小黑屋|依星资源网 ( 鲁ICP备2021043233号-3 )|网站地图

GMT+8, 2025-4-30 08:18

Powered by Net188.com X3.4

邮箱:312337667@qq.com 客服QQ:312337667(工作时间:9:00~21:00)

快速回复 返回顶部 返回列表