简单介绍mtbatis-plus

1.什么是mybatis -plus

mybatis -plus作为mybatis框架的“升级版”,提供了更多的东西帮助我们提高开发效率,简化开发过程。下面我们简单介绍一下如何使用plus版

2.如何使用mybatis-plus

2.1导入依赖

直接在官网查找即可,如下:
在这里插入图片描述
补充:该依赖包含mybatis依赖,引入这个就不需要再引入mybatis依赖。

2.2 BaseMapper<>

在mybatis框架中虽然注解法和xml文件法实现crud都很方便,但是总归还需要自己去写,但在plus中我们可以直接通过继承BaseMapper去直接使用方法,无需手动实现,具体如下:

场景:操作UserInfo表的Mapper接口,如图直接继承BaseMapper<操作表对应的实体类名>

public interface UserInfoMapper extends BaseMapper<UserInfo> {}

接下来我们就可以在Service层去调用
在这里插入图片描述

2.3 Wrapper

BaseMapper实现的方法虽然多,但是也不可能完全满足我们的需求,尤其是限制条件比较多的查询更新语句,仅靠继承的方法是不够的,所以plus又提供了一个wrapper类去写条件,然后作为参数去传递到方法中。

比如:查找id=8,password=“champion”,age小于30的user信息

  LambdaQueryWrapper<UserInfo> wrapper=new LambdaQueryWrapper<>();
  wrapper.eq(UserInfo::getId,8).eq(UserInfo::getPassword,"champion").lt(UserInfo::getAge,30);
  userInfoMapper.selectList(wrapper);

这样就非常非常的灵活,我们最多就是在接口写一个形参为wrapper的方法就可以完成对这些信息的查询。
wrapper的具体实现类有QueryWrapper和UpdateWrapper,对于查询和删除操作我们通常用QueryWrapper,更新则是UpdateWrapper。因为UpdateWrapper中可以使用set去设置值。

2.4 Lambda

LambdaQueryWrapper=QueryWrapper.lambda();
LambdaUpdateWrapper=UpdateWrapper.lambda();

为什么使用Lambda?
如果我们使用普通的QueryWrapper去设置条件,当我写列名时就需要与表中字段名完全一样,但是我们写的时候又不能保证不出错,而且列名一旦变化我们还得在代码中一一修改,所以我们使用LambdaQueryWrapper设置条件,将字段名换成对应类::get属性名,这样就避免了硬编码,也能防止列名变化导致代码bug

2.5自定义SQL

还是因为这个BaseMapper,他提供的方法不足,一方面是条件,另一方面前面的语句也不够,比如我们只需要查询该表符合wrapper条件的对象的一个列,但是想想也知道不可能BaseMapper针对每一个项都写一个方法,那太太太多了。所以这时我们就需要自定义SQL语句以满足我们的需求。

场景:查询user_info表中符合age=0的数据的id是多少

 @Select("select id from user_info ${ew.customSqlSegment}")
    List<Integer> selectToId(@Param("ew") LambdaQueryWrapper wrapper);

自定义SQL语句就可以做到指定查询列,至于wrapper,完全可以把它看成where条件成精了,不是,成对象了。
要注意的是,把wrapper拼到sql语句中要使用${ew.customSqlSegment}传递该参数,然后在参数列表中把wrapper名字用@Param指定为ew。

所以自定义SQL语句中我们要写的是where前面的,wrapper要求我们写where后面的,BaseMapper省了个寂寞
。。。。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值