MybatisPlus入门

王柳  论坛元老 | 2024-8-31 18:41:06 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 1021|帖子 1021|积分 3063

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
目录
一.快速入门
1.1 入门案例
1.2 常用注解
1.3 常用设置
二.焦点功能
2.1 条件构造器
2.1.1 基于QueryWrapper的查询
2.1.2 基于UpdateWrapper的更新
 2.2 自定义SQL
2.3 Service接口


MybatisPlus顾名思义就是Mybatis的plus版本,但是他并不是要取代Mybatis,而是盼望能成为Mybatis最好的搭档。
MybatisPlus具有许多可以大概帮助我们一样平常开辟的功能,比如引入其不会对我们的工程造成任何影响,我们依旧可以利用Mybatis,只做增强不做改变;
只需要简朴的设置就可以快速的进行单表的增删改查操作;
内置许多丰富的功能,代码天生、自动分页、逻辑删除、自动填充等;
一.快速入门

1.1 入门案例

通过一个入门案例感受MybatisPlus进行单表的增删改查。
现在写了一个小案例,此中的功能有新增用户、根据id查询用户、根据id批量查询用户、根据id更新用户、根据id删除用户这些简朴的crud功能。
这是对应数据库中的数据。

如果是利用mybatis我们的写法是这样的。


但是如果我们利用MybatisPlus呢?
起首我们需要进行设置。

接着在mapper接口中继承BaseMapper,并指定对应的实体类。
准备好这两步之后我们的开辟就酿成了下图这些结果。


而且测试这些方法也是没问题的。



利用MybatisPlus很简朴,只需要注入对应的好赖,Mapper接口继承BaseMapper即可。
1.2 常用注解



  • @TableName:用来指定表名
当在实体类名与数据库名称差别等时,需要利用@TableName指定表名,如果没有注解那么默认是驼峰转下划线的方式定义表名;


  • @TableId:用来指定表中的主键字段信息
这个注解是用来指定表中的主键字段信息的,还可以定义除了名称外的其他参数,比如type:idType枚举,AUTO表现数据库自增长,INPUT表现通过set方法自行输入.....


  • @TableField:用来指定表中的广泛字段信息
这个主键是指定平凡字段信息,当成员变量名与数据库字段差别等那么需要利用该注解进行修正,当成员变量名以is开头,而且是布尔范例的,那么默认在数据库中会将is去掉,所以我们也需要加上该注解,当成员变量名与数据库关键字辩论时,需要利用转义字符例如"`order`",当成员变量不是数据库中的字段也需要利用。

这里需要注意如果主键id为自增,那么需要指定自增范例(type= IdType.AUTO),否则默认是雪花算法天生的。
1.3 常用设置


二.焦点功能

2.1 条件构造器

2.1.1 基于QueryWrapper的查询

我们平时写的sql,就算是增删改查,但是也常涉及到条件判断,所以简朴自带的sql大概无法满足我们的需求,所以我们就需要利用条件构造器。

这就是一个查询对应字段,条件为名字有带"o",且账户余额大于等于1000的用户。
接下来再写一个更新语句,更新"jack"的账户余额为2000。

2.1.2 基于UpdateWrapper的更新

有一个需求为更新用户id为1,2,4的用户账户余额扣200,我们需要怎么做,在上方因为是只需要变动一个用户的,所以我们直接set进对象。
如果正常写sql,应该是这样的 update user blance = blance-200 where id in(1,2,4)
接下来我们看看利用条件构造器如何编写。

但是我们可以看到如上方QueryWrapper的查询语句,我们的字段都是写死的,这样会导致硬编码,为了避免硬编码,尽量利用LambadQueryWrapper和LambadUpdateWrapper。

 2.2 自定义SQL

这里的自定义SQL是什么意思呢?
mp不是帮我们构建好了SQL吗?
在企业编码规范中,在业务层编写sql是不被答应的,那么我们就需要利用自定义SQL。
我们可以利用mp的wrapper来构建复杂的where条件,然后自定义SQL语句中剩下的部分。
接下来我们就来看看写法。



2.3 Service接口

自定义的接口可以继承Service接口,此中有许多增删改查的方法,但是继承了Service接口后,对应的实现类也需要继承ServiceImpl,这里面就是Service方法的实现。


接下来让我们来看看利用IService接口开辟一些业务接口。

下面是对应的实现


我们也可以到对应简朴的业务我们甚至都只需要编写controller里的代码即可,但是实际的开辟也是都这么简朴的业务的,对应比较复杂的业务就需要我们自定义sql,比如这里的第五个接口:扣减用户余额我们需要先根据id来找到对应的用户,再查看其状态是否可用,最后判断其余额是否充足才能进行扣减。


接下来我们来看看IService的Lambda方法。
需求是这样的:实现一个根据复杂条件查询用户的接口,查询条件如下


  • name:用户名关键字,可以为空
  • status:用户状态,可以为空
  • minBalance:最小余额,可以为空
  • maxBalance:最大余额,可以为空
我们用Mybatis写sql的时间应该是这样写的

接下来就看看利用IService的Lambda方法如何编写。


除了查询,Lambda还提供了更新方法。
需求为:改造根据id修改用户余额的接口,要求为,完成用户状态校验,完成用户余额校验,如果扣减后余额为0,则用户status修改为冻结状态(2)。
看这个我们可以发现这与我们之前写的更新很像,无法是加入了用户状态的修改,让我们看看之前的写法。

这里我们利用Lambda的更新方法改造一下。

这样就实现了我们的需求了。
至于MyBatisPlus的扩展功能和插件功能有爱好的可以去看看b站黑马的MybatisPlus课程。
自我感觉利用MybatisPlus有一定水平上,让代码变得杂乱,所以我还是比较偏向于继续利用myabtis。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

王柳

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表