迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称:mybatis-kits开源软件地址:https://gitee.com/blackfox/mybatis-kits开源软件介绍:MyBatis-KitsMyBatis 增强工具包,实现了便捷的单表 CRUD,各种自定义条件查询,以及物理分页查询,单表查询甚至可以做到无 XML,像使用 PHP 操作数据库一样简单。 仓库地址
为什么使用 Mybatis-Kits?
最新版本<dependency> <groupId>org.rockyang</groupId> <artifactId>mybatis-kits-core</artifactId> <version>1.5.2</version></dependency> SpringBoot 项目接入方式 <dependency> <groupId>org.rockyang</groupId> <artifactId>mybatis-kits-spring-boot-starter</artifactId> <version>1.5.2</version></dependency>
小试牛刀假设我们已存在一张 User 表,且已有对应的实体类 User,实现 User 表的 CRUD 操作我们只需创建一个对应的 Mapper 接口就行了。 public interface UserMapper extends BaseMapper<User> { } 基本 CRUD 操作// 影响行数int affactRows = 0;// 初始化 User 实体对象, 如果是非自增ID需要初始化ID// 系统有内置的分布式 ID 生成工具User user = new User(userMapper.getNewId());// 插入 User (如果是自增ID的话,插入成功会自动回写ID到实体类)user.setName("Rock");affactRows = userMapper.add(user);// 更新 Useruser.setAge(18);affactRows = userMapper.update(user);// 你也可以这样affactRows = userMapper.updateAll(user);/* 注意:update() 方法只更新 User 实体的非 null 字段,是增量更新 而 updateAll() 会更新所有字段,包括值为 null 的字段 应用需求:比如你知道用户ID,只想更新 Name 字段,常规方法是下面这样的 */String userId = "abc";User user = userMapper.get(userId);user.setName("New name");userMapper.updateAll(user);// 或则你也可以这样实现User user = new User(userId);user.setName("New name");userMapper.update(user); // 这样可以少一次查询// 所以如果你就是要把某个字段更新成 null, 请使用 updateAll()// 查询 UserUser userItem = userMapper.get(user.getId());// 查询ID > 100 所有用户列表List<User> userList = userMapper.searchByConditions( new Conditions.gt("id", 100));// 如果只想取列表中的一条User u = userMapper.getByCondition(new Conditions.gt("id", 100));// 删除 UseraffactRows = userMapper.delete(user.getId());// 删除 id > 100 and id < 200 的所有用户Conditions condi = new Conditions();condi.gt("id", 100).lt("id", 200);affactRows = UserMapper.deleteByConditions(condi); 分页查询(所有分页均为物理分页)// 查询所有记录并分页Page<User> page = new Page<>();page.setPageSize(10);page = userMapper.search(page);for (User user : page.getResults()) { logger.info("结果:{}",user);}// 按照条件查询分页Conditions condi = new Conditions();condi.eq("name", "Rock");Page<User> page = new Page<>();page.setPageSize(10);page = userMapper.searchByConditions(page, condi);for (User user : page.getResults()) { logger.info("结果:{}",user);} 条件组合MyBatis-Kits 的 Conditions 查询异常强大,几乎可以满足你单表查询的所有需求。 先来个简单的: Conditions conditions = new Conditions();conditions.eq("name", "Rock") .ge("age", 18) .lt("age", 30) .ne("address", "Addres_A");// output: name='Rock' AND age > 18 AND age < 30 AND address != 'Addres_A' 再来个稍微复杂一点的: Conditions conditions = new Conditions();conditions.add(Restrictions.and(Restrictions.eq("age",18),Restrictions.eq("name","zhangsan")));conditions.add(Restrictions.or(Restrictions.eq("count",18),Restrictions.eq("count",29)));// output: ((age=18 AND name='zhangsan') AND (count=18 OR count=29)) 更多复杂条件查询请参考单元测试 上面的所有功能都是不需要创建 Mapper.xml 文档就可以轻松实现的,如果你需要增加联合查询功能,只需增加相应的 UserMapper.xml,在里面实现就好了。完全兼容原生 MyBatis 的所有功能。 文档另外,本项目里面有 demo 项目,以及大量的单元测试,能够很快上手。 ![]() |
请发表评论