BaseMapper 接口
通用 BaseMapper 接口提供了一组 预设的数据库操作方法,借助 对象映射 信息即可完成 CRUD,无需编写任何 SQL 语句。
特点
声明实体类
使用 @Table 和 @Column 注解建立映射
@Table("users")
public class User {
@Column(name = "id", primary = true, keyType = KeyTypeEnum.Auto)
private Long id;
@Column("name")
private String name;
@Column("age")
private Integer age;
@Column("email")
private String email;
...
}
创建 BaseMapper
通过 Session 创建
Configuration config = new Configuration();
Session session = config.newSession(dataSource);
BaseMapper<User> mapper = session.createBaseMapper(User.class);
增删改查
基础 CRUD 操作
// 插入 1 条数据
User user = ...
int result = mapper.insert(user);
// 插入多条数据
int result = mapper.insert(Arrays.asList(user1, user2));
// 根据主键查询
User loaded = mapper.selectById(1);
// 批量主键查询
List<User> users = mapper.selectByIds(Arrays.asList(1, 2, 3));
// 根据主键更新
user.setAge(30);
int result = mapper.update(user);
// 根据主键删除
int result = mapper.deleteById(1);
样本查询与分页
通过样本对象进行条件查询和分页
// 样本查询:非空属性作为等值条件
User sample = new User();
sample.setAge(30);
List<User> result = mapper.listBySample(sample);
// 统计查询
int count = mapper.countBySample(sample);
// 分页查询
Page pageInfo = mapper.pageInitBySample(sample, 0, 20); // 页码从 0 开始
PageResult<User> result = mapper.pageBySample(sample, pageInfo);
切换到构造器 API
需要复杂条件时,可直接获取构造器
List<User> result = mapper.query()
.like(User::getName, "A%")
.ge(User::getAge, 20)
.queryForList();
有关接口的详细信息,请参阅: