快速开始
以上就是您所需的所有操作,甚至不需要您创建XML文件,我们如何使用它呢?
int result = 0;
// 初始化 User 对象
User user = new User();
// 插入 User (插入成功会自动回写主键到实体类)
user.setName("Tom");
result = userMapper.insert(user);
// 更新 User
user.setAge(18);
result = userMapper.updateById(user);
// 查询 User
User exampleUser = userMapper.selectById(user.getId());
// 查询姓名为‘张三’的所有用户记录
new EntityWrapper<User>().eq("name", "张三")
);
// 删除 User
result = userMapper.deleteById(user.getId());
以上是基本的 CRUD 操作,当然我们可用的 API 远不止这几个,我们提供了多达 17 个方法给大家使用,可以极其方便的实现单一、批量、分页等操作,接下来我们就来看看 MP 是如何使用分页的。
分页操作
// 分页查询 10 条姓名为‘张三’的用户记录
List<User> userList = userMapper.selectPage(
new Page<User>(1, 10),
new EntityWrapper<User>().eq("name", "张三")
);
如您所见,我们仅仅需要继承一个 BaseMapper 即可实现大部分单表 CRUD 操作,极大的减少的开发负担。
现有一个需求,我们需要分页查询
User 表中,年龄在18~50之间性别为男且姓名为张三的所有用户
,这时候我们该如何实现上述需求呢?
传统做法是 Mapper 中定义一个方法,然后在 Mapper 对应的 XML 中填写对应的 SELECT 语句,且我们还要集成分页,实现以上一个简单的需求,往往需要我们做很多重复单调的工作,普通的通用 Mapper 能够解决这类痛点么?
以上操作,等价于
SELECT *
FROM sys_user
WHERE (name='张三' AND sex=0 AND age BETWEEN '18' AND '50')
LIMIT 0,10
Mybatis-Plus 通过 EntityWrapper(简称 EW,MP 封装的一个查询条件构造器)或者 Condition(与EW类似) 来让用户自由的构建查询条件,简单便捷,没有额外的负担,能够有效提高开发效率。
简单示例(ActiveRecord)
我们如何使用 AR 模式?
@TableName("sys_user") // 注解指定表名
public class User extends Model<User> {
... // fields
/** 指定主键 */
@Override
protected Serializable pkVal() {
return this.id;
}
}
我们仅仅需要继承 Model 类且实现主键指定方法 即可让实体开启 AR 之旅,开启 AR 之路后,我们如何使用它呢?
基本CRUD
// 分页查询 10 条姓名为‘张三’的用户记录
List<User> userList = user.selectPage(
new Page<User>(1, 10),
new EntityWrapper<User>().eq("name", "张三")
).getRecords();
复杂操作
// 分页查询 10 条姓名为‘张三’、性别为男,且年龄在18至50之间的用户记录
List<User> userList = user.selectPage(
new Page<User>(1, 10),
new EntityWrapper<User>().eq("name", "张三")
.eq("sex", 0)
.between("age", "18", "50")
).getRecords();
通过以上两个简单示例,我们简单领略了 Mybatis-Plus 的魅力与高效率,值得注意的一点是:我们提供了强大的代码生成器
,可以快速生成各类代码,真正的做到了。