Mybatis-Plus入门(二)

1、lambda条件构造器:lambda条件构造器除了具备普通条件构造器的好处以外内,还具有防误写功能。
创建Lambda条件构造器的几种方式:

//1
LambdaQueryWrapper<T>  wrapper = new QueryWrapper<T>().lambda();
//2
LambdaQueryWrapper<T>  wrapper = new LambdaQueryWrapper<T>();
//3
LambdaQueryWrapper<T>  wrapper = Wrappers.<T>lambdaQuery();

例1:

LambdaQueryWrapper<User>  wrapper = Wrappers.<User>lambdaQuery();
//方法引用的方式查询User表中name字段包含雪,并且年龄字段小于40的数据
wrapper.like(User::getName,"雪").lt(User::getAge,40);
List<User> userList = userMapper.selectList(wrapper);

例2:

/** 名字为王姓并且(年龄小于40或邮箱不为空) 
*  sql写法:name like '王%' and (age < 40 or email is not null)
*/
LambdaQueryWrapper<User>  wrapper = Wrappers.<User>lambdaQuery();
wrapper.likeRight(User::getName,"王").and(lqw->lqw.lt(User::getAge,40).or().isNotNull(User::getEmail));
List<User> userList = userMapper.selectList(wrapper);

2、使用条件构造器自定义sql:有时候Mybatis-Plus的BaseMapper提供的方法满足不了我们的需求了,但是我们还是想用条件构造器的话,这时候我们可以自定义sql。
例:

//在userMapper自定义方法
List<User> selectAll(@Param(Constants.WRAPPER) Wrapper<User> wrapper);

在userMapper.xml定义sql

<select id="selectAll" resultType="com.mp.entity.User">
   select * from User ${ew.customSqlSegment}
</select>

3、分页查询
MP分页插件实现物理分页
新建一个配置类,把PaginationInterceptor注入进来

@Configuration
public class MybatisPlusConfig{

    @Bean
    public PaginationInterceptor paginationInterceptor(){
          return new PaginationInterceptor();
    }
}

在BaseMapper中提供了两个分页方法:

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

分页查询时会执行一条查询总记录数的sql,如果不想查询总记录数,可以使用Page带boolean isSearchCount的构造方法,传false即为不查。

自定义分页查询(可用于多表联查)
例:

//第一个参数要为page
IPage<UserVo> selectMultiPage(Page page,@Param("user") User user);
//带条件构造器的自定义分页查询
IPage<UserVo> selectMultiPage2(Page page,@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);

4、Mp通用Mapper更新方法

根据 ID 修改:

//根据 ID 修改,如果entity有的属性为null的话,则其对应的表中的列不会出现在update语句中
int updateById(@Param(Constants.ENTITY) T entity);

带有条件构造器的更新

// 根据 whereWrapper 条件,更新记录
int update(@Param(Constants.ENTITY) T updateEntity, @Param(Constants.WRAPPER) Wrapper<T> whereWrapper);

当只需某个或少量字段时,可以使用UpdateWrapper的set方法,这时实体类传null就可以了。

5、Mp通用Mapper删除方法
根据 ID 删除:

int deleteById(Serializable id);

根据 columnMap 条件,删除记录(类似于selectByMap,通过map中的条件进行删除)

int deleteByMap(@Param(Constants.COLUMN_MAP) Map<String, Object> columnMap);

删除(根据ID 批量删除)

int deleteBatchIds(@Param(Constants.COLLECTION) Collection<? extends Serializable> idList);

根据 entity 条件,删除记录

int delete(@Param(Constants.WRAPPER) Wrapper<T> wrapper);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值