myBatis&myBatis-plus

1. 使用方法

不用写Java代码,只专注于写SQL语句即可(使用增删查改四种标签),通过标签id与接口的方法名对应实现

Mapper接口中不允许重载

在这里插入图片描述

在这里插入图片描述

实际使用时通过SQL session,是通过工厂获取的

在这里插入图片描述

使用时手动创建SQL session的过程很复杂,后续这一过程交给ioc了

2. extra

2.1 传入–两种接收值的方法 #{} ${}

在这里插入图片描述
在这里插入图片描述
多表查询 / 主键设置 / 返回值类型 都是通过xml标签的属性来控制的

2.2 lombok使用

简化与数据库表对应的类

在这里插入图片描述

2.3 CURD案例

在这里插入图片描述

配置文件:

在这里插入图片描述

2.4 resultType和 resultMap

在MyBatis中,resultTyperesultMap是用于指定查询结果映射的两种方式。

  1. resultType:通过指定Java类类型来映射查询结果。您可以使用Java的原生类型(如int、String等)或自定义的POJO(Plain Old Java Object)类。在使用resultType时,MyBatis会根据SQL查询结果的列名和类型,自动将结果映射到指定的Java类的实例中。例如:
<select id="getUser" resultType="com.example.User">
    SELECT id, name, email FROM users WHERE id = #{userId}
</select>

在上面的示例中,查询结果将被映射到com.example.User类的实例中。

  1. resultMap:通过在MyBatis的映射文件中定义一个命名的结果映射来映射查询结果。通过使用resultMap,您可以更加灵活地控制查询结果的映射规则,如处理多表联合查询、一对多关系等复杂场景。首先,在映射文件中定义一个<resultMap>元素,其中包含各种映射规则,例如列名和Java属性之间的映射关系、嵌套对象的映射等。然后,在SQL语句中使用resultMap的ID来指定结果映射。例如:
<resultMap id="userMap" type="com.example.User">
    <id property="id" column="id" />
    <result property="name" column="name" />
    <result property="email" column="email" />
</resultMap>

<select id="getUser" resultMap="userMap">
    SELECT id, name, email FROM users WHERE id = #{userId}
</select>

在上面的示例中,<resultMap>定义了com.example.User类的映射规则,然后在<select>语句中使用resultMap="userMap"来指定结果映射。

总结:

  • resultType简单且适合于简单的查询,将结果直接映射到Java类的属性。
  • resultMap更加灵活且适合于复杂的查询,可以自定义映射规则来处理各种场景。

3. 多表查询

需要用户:

在这里插入图片描述

返回一个类

在这里插入图片描述

在这里插入图片描述

返回一个类的list

在这里插入图片描述

4. 会变化的SQL语句

在这里插入图片描述
就是给SQL语句加一点逻辑

5. 批量操作

依赖foreach标签

批量查询/删除/插入/修改

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

6. 分页插件 PageHelper

查询语句不用改,使用时直接设置分页参数即可

在这里插入图片描述

一个查询结果对应一个分页插件

//将查询结果list塞进分页插件中

PageInfo<Employee> pageInfo = new PageInfo<>(list)

7. 单表增删改查

mybatis-plus主要增强这个的

但是多表查询还得自己写

8. 总结

在这里插入图片描述

9. myBatis-plus快速入门

启动类的@Mapper Scan是 MyBatis 框架中的一个注解,用于扫描指定的包路径,自动将符合条件的接口标记为 MyBatis 的映射接口(Mapper)。
在这里插入图片描述

数据库对应表 lombok @Data:

在这里插入图片描述

mapper接口:

在这里插入图片描述

不用再写.xmlSQL语句了

使用:

在这里插入图片描述
真好啊真好啊真好啊

SQL条件增多,多到可以把条件封装到Wrapper

map删除:

在这里插入图片描述

10. Service层CRUD

Service层也有了CRUD方法:

偏向业务方法,而非纯操作DB

mapper:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

获取IOC容器时都是用接口接:

在这里插入图片描述

11. 分页

(1)用mybatis的分页插件

在这里插入图片描述
在这里插入图片描述

(2)自定义分页:根据年龄查询的结果分页

在这里插入图片描述

在这里插入图片描述

注意:此处result Type是IPage的泛型,不是IPage
select标签内的语句不能有分号,因为在其后面要被加limit语句

使用:

在这里插入图片描述
在这里插入图片描述

12. Wrapper条件构造器

拼接条件用的

在这里插入图片描述

以下以基于userMapper为例

12.1 基于query的

查询:

在这里插入图片描述

更新:

在这里插入图片描述

上面是query实现,下面是专门的update实现(让专业的来)

在这里插入图片描述

12.2 基于lambda的

避免类名写错

对比:

在这里插入图片描述

在这里插入图片描述

13. 逻辑删除

不是真删除,实际是修改delete字段,方便数据回滚

设置此字段为1后再执行查询,mybatis-plus会自动在SQL语句后面添加where delete=0,限制一下

单个表指定:

在这里插入图片描述

全局指定所有表:

在这里插入图片描述

14. 乐观锁

并发访问可能导致的错误:

在这里插入图片描述

悲观锁:互斥访问,给厕所门上锁

乐观锁:没有锁,反复尝试,进去发现厕所有人,出来,隔一会再进去,发现还是有人,再出来。。。直到访问到数据(版本号方式,具体实现:

在这里插入图片描述

mybatis plus实现:

启动类:

在这里插入图片描述

数据库中添加乐观锁字段:

在这里插入图片描述

实体类:

在这里插入图片描述

使用:

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值