Mybatis-plus中BaseMapper具体方法说明

一、BaseMapper方法详解

1、Insert

// 插入一条记录
int insert(T entity);

2、Delete

// 根据 entity 条件,删除记录
int delete(@Param(Constants.WRAPPER) Wrapper<T> wrapper);
// 删除(id集合 批量删除,不能为 null 以及 empty)——例如参数为:List<String> idList;
int deleteBatchIds(idList);
// 根据 ID 删除
int deleteById(id);
// 根据 columnMap 条件,删除记录
int deleteByMap(@Param(Constants.COLUMN_MAP) Map<String, Object> columnMap);

3、Update

// 根据 whereEntity 条件,更新记录
int update(@Param(Constants.ENTITY) T entity, @Param(Constants.WRAPPER) Wrapper<T> updateWrapper);
// 根据 ID 修改,实体中set id参数,然后将实体直接传入。
int updateById(T entity);

4、Select

// 根据 ID 查询
T selectById(Serializable id);
// 根据 entity 条件,查询一条记录
T selectOne(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);
// 查询(根据ID 批量查询,与上述删除类似)
List<T> selectBatchIds(@Param(Constants.COLLECTION) Collection<? extends Serializable> idList);
// 根据 entity 条件,查询全部记录,参数为null,查询所有记录
List<T> selectList(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);
// 查询(根据 columnMap 条件)
List<T> selectByMap(@Param(Constants.COLUMN_MAP) Map<String, Object> columnMap);
// 根据 Wrapper 条件,查询全部记录
List<Map<String, Object>> selectMaps(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);
// 根据 Wrapper 条件,查询全部记录。注意: 只返回第一个字段的值
List<Object> selectObjs(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);
 


// 分页查询
IPage<T> selectPage(IPage<T> page, @Param(Constants.WRAPPER) Wrapper<T> queryWrapper);
例如:
	Page p = new Page(pageNum, pageSize);
	QueryWrapper<ReportIndexDO> queryWrapper = new QueryWrapper<>();
	//设置查询条件,进行模糊查询
    queryWrapper.lambda().like(!StringUtils.isEmpty(indexName),ReportIndexDO::getIndexName,indexName).
                eq(!StringUtils.isEmpty(frequency),ReportIndexDO::getReportingFreq,frequency);
xxxMapper.selectPage(p,queryWrapper);



// 根据 Wrapper 条件,查询全部记录(并翻页)
IPage<Map<String, Object>> selectMapsPage(IPage<T> page, @Param(Constants.WRAPPER) Wrapper<T> queryWrapper);
// 根据 Wrapper 条件,查询总记录数
Integer selectCount(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);

二、BaseMapper方法实例

public class lkmMapper {

    @Resource
    private UserMapper userMapper;

    /**
     * 获取所有用户
     */
    @Test
    public void selectList(){
        userMapper.selectList(null);
    }

    /**
     * 根据指定条件 查询符合条件的用户 (selectList传参数的查询形式)
     */
    @Test
    public void selectAllList(){
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.ge("name",lkm);
        userMapper.selectList(queryWrapper);
    }

    /**
     * 根据 id 查询指定用户
     */
    @Test
    public void selectById(){
        userMapper.selectById(001);
    }

    /**
     * 根据 ID 批量查询用户
     */
    @Test
    public void selectBatchIds(){
        List<Integer> integers = Arrays.asList(1,2,3);
        userMapper.selectBatchIds(integers);
    }

    /**
     * 根据 Map搜索条件查询指定条件下的用户
     */
    @Test
    public void selectByMap(){
        Map<String,Object> map = new HashMap<>();
        map.put("name","lkm");
        userMapper.selectByMap(map);
    }

    /**
     * wrapper 查询一条数据
     */
    @Test
    public void selectOne(){
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("name","lkm");
        userMapper.selectOne(queryWrapper);
    }

    /**
     * 根据指定条件查询符合条件的记录数
     */
    @Test
    public void selectCount(){
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.gt("name",lkm);
        userMapper.selectCount(queryWrapper);
    }



    /**
     * 根据指定条件查询用户
     */
    @Test
    public void selectMaps(){
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.ge("name",lkm);
        userMapper.selectMaps(queryWrapper);
    }

    /**
     * 根据指定条件查询符合条件的用户 (只返回第一个字段值)
     */
    @Test
    public void selectObjs(){
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.ge("name",lkm);
        userMapper.selectObjs(queryWrapper);
    }

    /**
     * 查询所有用户并分页
     */
    @Test
    public void selectPage(){
        Page p = new Page(pageNum, pageSize);
        QueryWrapper<ReportIndexDO> queryWrapper = new QueryWrapper<>();
        reportIndexMapper.selectPage(p,queryWrapper)
    }

    /**
     * 查询所有用户并分页
     */
    @Test
    public void selectMapsPage(){
        Page<User> page = new Page<>(1,2);
        IPage<Map<String, Object>> mapIPage = userMapper.selectMapsPage(page, null);
        List<Map<String, Object>> records = mapIPage.getRecords();
    }

    /**
     * 插入一条记录
     */
    @Test
    public void insert(){
        User user = new User();
        user.setUsername("lkm");
        userMapper.insert(user);
    }

    /**
     * 根据ID删除一条记录
     */
    @Test
    public void deleteById(){
        userMapper.deleteById(001);
    }

    /**
     * 根据指定 Map 条件删除记录
     */
    @Test
    public void deleteByMap(){
        Map<String,Object> map = new HashMap<>();
        map.put("name",lkm);
        userMapper.deleteByMap(map);
    }

    /**
     * 根据指定 Wrapper 条件删除记录
     */
    @Test
    public void delete(){
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.likeRight("name","lkm");
        userMapper.delete(queryWrapper);
    }

    /**
     * 根据指定ID批量删除记录
     */
    @Test
    public void deleteBatchIds(){
        List<Integer> integers = Arrays.asList(001, 002);
        userMapper.deleteBatchIds(integers);
    }

    /**
     * 根据指定条件更新记录
     */
    @Test
    public void update(){
        User user = new User();
        user.setEmail("lkm@qq.com");
        UpdateWrapper<User> updateWrapper = new UpdateWrapper<>();
        updateWrapper.eq("name","lkm");
        userMapper.update(user, updateWrapper);
    }

    /**
     * 指定ID 更新记录
     */
    @Test
    public void updateById(){
        User user = new User();
        user.setId(001);
        user.setNmae("lkm");
        userMapper.updateById(user);
    }
  • 6
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: Mybatis-Plus继承BaseMapper是指Mybatis-Plus框架Mapper接口可以继承BaseMapper接口,从而获得一些基本的CRUD方法,如insert、update、delete、select等。这样可以减少开发人员的重复劳动,提高开发效率。同时,Mybatis-Plus还提供了一些高级功能,如分页、逻辑删除、乐观锁等,可以进一步简化开发流程。 ### 回答2: MyBatis-Plus是一款优秀的MyBatis增强工具,提供了丰富的便于开发的API和增强功能,方便我们快速完成MyBatis的CRUD操作。MyBatis-PlusBaseMapper是一个MyBatis常用的Mapper接口,提供了一系列基础的CRUD方法,如:selectById(), selectBatchIds(), selectOne(), selectList(), insert(), insertBatch(), updateById(), deleteById(), deleteBatchIds()等。 在基于MyBatis-Plus进行开发时,我们可以直接继承BaseMapper接口,然后通过@Repository注解将其注入到Service层,实现一些基础的数据库操作。当需要自定义SQL操作时,我们只需在自定义的Mapper接口继承BaseMapper接口即可。这样既可以简化代码,又可以减少重复工作,提高开发效率。 BaseMapper的继承使用非常简单,只需要在自定义的Mapper接口上加上一个注解@Mapper(或者@Repository),然后继承BaseMapper即可。例如: ```java @Mapper @Repository public interface UserMapper extends BaseMapper<User> { // 自定义SQL语句 } ``` 在自定义的Mapper接口可以添加自己的SQL操作方法,BaseMapper接口的方法也可以进行重写,但一般不建议这样做。实际开发,我们可以通过BaseMapper提供的方法快速实现基础的CRUD操作,然后再根据业务需求逐步完善自己的Mapper接口。 总之,继承BaseMapperMyBatis-Plus优化数据库操作和减少代码冗余的好方法。将通用的CRUD操作统一处理后,我们可以更关注业务逻辑的实现,提高开发效率和代码质量。 ### 回答3: MyBatis-Plus提供了一个BaseMapper类,它已经实现了基本的CRUD操作方法,我们可以通过继承BaseMapper来进行更方便的开发。 继承BaseMapper主要有以下优点: 1. 代码复用性高:BaseMapper已经实现了基本的CRUD操作方法,我们可以直接继承BaseMapper来使用这些方法,而不用再次编写相同的代码。 2. 提高开发效率:由于BaseMapper已经实现了基本的CRUD操作方法,我们只需要关注业务逻辑的实现,不用再花费时间编写基础的CRUD操作。 3. 易于维护:继承BaseMapper后,我们可以使用通用的CRUD操作方法来操作数据库,这使得我们的代码更加简洁、易于维护。 使用BaseMapper的步骤如下: 1. 定义实体类并添加注解 ```java @Data public class User implements Serializable { @TableId(type = IdType.AUTO) private Long id; private String name; private Integer age; private String email; } ``` 2. 创建Mapper接口并继承BaseMapper<T> ```java @Mapper public interface UserMapper extends BaseMapper<User> { } ``` 3. 使用Mapper接口 使用Mapper接口进行CRUD操作: ```java @Service public class UserServiceImpl implements UserService { @Autowired private UserMapper userMapper; @Override public List<User> listUsers() { return userMapper.selectList(null); } @Override public User getUserById(Long id) { return userMapper.selectById(id); } @Transactional @Override public boolean addUser(User user) { return userMapper.insert(user) > 0; } @Transactional @Override public boolean updateUser(User user) { return userMapper.updateById(user) > 0; } @Transactional @Override public boolean deleteUserById(Long id) { return userMapper.deleteById(id) > 0; } } ``` 继承BaseMapper可以让我们的开发更加高效,同时也可以让代码更加简洁易读。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

傻猴儿

小编,多谢客官留下的赏钱。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值