前言
使用 mybatis-plus 实现
查询、插入、更新、删除
。
示例
准备
依赖
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.2</version>
</dependency>
Mapper
@Mapper
public interface UserMapper extends BaseMapper<UserModel> {
}
1. 查询
@Service
public class UserService extends ServiceImpl<UserMapper, UserModel> {
@Autowired
private UserMapper userMapper;
public void testSelect() {
QueryWrapper<UserModel> queryWrapper = new QueryWrapper<>();
queryWrapper.select("id", "name", "age"); // select id, name, age
queryWrapper.isNull("name"); // name is null
queryWrapper.isNotNull("name"); // name is not null
queryWrapper.eq("id", 10); // id = 10
queryWrapper.ne("id", 10); // id != 10
queryWrapper.gt("id", 10); // id > 10
queryWrapper.ge("id", 10); // id >= 10
queryWrapper.lt("id", 10); // id < 10
queryWrapper.le("id", 10); // id <= 10
queryWrapper.in("id", Arrays.asList(1, 2, 3)); // id in (1,2,3)
queryWrapper.notIn("id", Arrays.asList(1, 2, 3)); // id not in (1,2,3)
queryWrapper.between("id", 7, 10); // id between 7 and 10 (id >= 7 && id <= 10)
queryWrapper.like("name", "wei"); // name like '%wei%'
queryWrapper.like(StringUtils.isNotBlank(model.getName()), "name", "wei"); // 满足条件再拼接sql: name like '%wei%'
queryWrapper.likeLeft("name", "wei"); // name like '%wei'
queryWrapper.likeRight("name", "zhao"); // name like 'zhao%'
queryWrapper.orderByAsc("id"); // order by id
queryWrapper.orderByDesc("id"); // order by id desc
// 分页查询
int pageNum = 1; // 当前页码
int pageSize = 10; // 每页数量
Page<UserModel> page = new Page<>();
page.setCurrent(pageNum);
page.setSize(pageSize);
Page<UserModel> modelPage = userMapper.selectPage(page, queryWrapper);
modelPage.getTotal(); // 总量
modelPage.getCurrent(); // 当前页码
modelPage.getSize(); // 每页数量
// 子查询
queryWrapper.inSql("id", "select id from user where id > 100"); // id 在子查询的范围内
}
}
2. 插入
@Service
public class UserService extends ServiceImpl<UserMapper, UserModel> {
@Autowired
private UserMapper userMapper;
@Override
@Transactional(rollbackFor = {Exception.class})
public boolean saveBatch(Collection<UserModel> entityList, int batchSize) {
return super.saveBatch(entityList, batchSize);
}
public void testInsert() {
// 单个插入
UserModel model = new UserModel();
userMapper.insert(model);
// 批量插入, 每次插入200
List<UserModel> models = new ArrayList<>();
this.saveBatch(models, 200);
}
}
3. 更新
@Service
public class UserService extends ServiceImpl<UserMapper, UserModel> {
@Autowired
private UserMapper userMapper;
public void testUpdate() {
UpdateWrapper<UserModel> updateWrapper = new UpdateWrapper<>();
updateWrapper.set("name", "lisi");
updateWrapper.set("age", 20);
updateWrapper.eq("id", 10);
userMapper.update(null, updateWrapper);
}
}
4. 删除
@Service
public class UserService extends ServiceImpl<UserMapper, UserModel> {
@Autowired
private UserMapper userMapper;
public void testDelete() {
QueryWrapper<UserModel> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("id", 10);
userMapper.delete(queryWrapper);
}
}