Skip to content

MybatisPlus之所以方便,就是因为提供了通过面向对象的方式去构建SQL语句的能力,使得我们进行开发时,一些简单的逻辑不需要去写sql就可以完成,这里封装成案例的方式,就不单独讲解了,使用简单注释也比较全面。

Service

java
public interface UserService {

    //查询所有用户
    List<User> findAll();

    //保存用户
    User saveUser(User user);

    //更新用户 - 根据id
    void updateUserById(User user);

    //根据条件更新用户
    void update(User user);

    //根据条件更新用户
    void update2(User user);

    //根据id删除
    void deleteById(Integer id);

    //根据用户信息删除
    void delete(User user);

    //根据id集合批量删除
    void deleteByIds(ArrayList<Integer> ids);

    //根据id查询用户
    User selectById(Integer id);

    //根据id集合查询用户
    List<User> selectByIds(ArrayList<Integer> ids);

    //根据条件查询用户
    User selectOne(User user);

    //根据条件查询总记录数 如果查询所有传入空
    Integer selectCount(User user);

    //查询所有记录
    Integer selectCountAll();
}

ServiceImpl

下面有使用到QueryWrapper和UpdateWrapper条件构造器的地方,详细API请点击MP核心操作之条件构造器查询

java
@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private UserMapper userMapper;

    @Override
    public List<User> findAll() {
        return userMapper.selectList(null);
    }

    @Override
    public User saveUser(User user) {
        userMapper.insert(user);
        //此时返回user会返回User自动生成的is,MyBatisPlus已经帮我们做好了相关工作
        return user;
    }

    @Override
    public void updateUserById(User user) {
        userMapper.updateById(user);
    }

    @Override
    public void update(User user) {
        //构建条件
        QueryWrapper<User> wrapper = new QueryWrapper<>();
        //根据用户名更新,参数1对应数据库中的字段
        wrapper.eq("user_name","zhangsan");
        //参数1:实体对象
        userMapper.update(user, wrapper);
    }

    //UpdateWrapper和QueryWrapper的区别在于UpdateWrapper可以设置更新的字段,update中一个是对象一个是null
    @Override
    public void update2(User user) {
        //构建条件
        UpdateWrapper<User> wrapper = new UpdateWrapper<>();
        //更改"user_name"为"zhangsan"的age和password字段
        wrapper.set("age",21).set("password","88888").eq("user_name","zhangsan");
        //参数1:实体对象
        userMapper.update(null, wrapper);
    }


    @Override
    public void deleteById(Integer id) {
        userMapper.deleteById(id);
    }

    @Override
    public void delete(User user) {
        QueryWrapper<User> wrapper = new QueryWrapper<>(user);
        userMapper.delete(wrapper);
    }

    @Override
    public void deleteByIds(ArrayList<Integer> ids) {
        userMapper.deleteBatchIds(ids);
    }

    @Override
    public User selectById(Integer id) {
        return userMapper.selectById(id);
    }

    @Override
    public List<User> selectByIds(ArrayList<Integer> ids) {
        return userMapper.selectBatchIds(ids);
    }

    @Override
    public User selectOne(User user) {
        return userMapper.selectOne(new QueryWrapper<>(user));
    }

    @Override
    public Integer selectCount(User user) {
        return userMapper.selectCount(new QueryWrapper<>(user));
    }

    @Override
    public Integer selectCountAll() {
        return userMapper.selectCount(new QueryWrapper<>(null));
    }
}