Mybatis第二天

掌握为SQL映射文件传递参数的方法

一、将查询条件封装成String对象作为入参

     1.在SysUserMapper接口中添加查询方法

                 

     2.在SysUserMapper.xml中添加SQL语句映射

     3.在测试类中添加测试方法

 二、 将查询条件封装成Map对象作为入参

 1.在SysUserMapper接口中添加查询方法
 2.在SysUserMapper.xml中添加SQL语句映射

3.在测试类中添加测试方法

 三、 将查询条件封装成@Param注解作为入参

    1.在SysUserMapper接口中添加查询方法

    2.在SysUserMapper.xml中添加SQL语句映射

    3.在测试类中添加测试方法

掌握使用resultMap元素映射查询结果的方法

  1.什么事resultMap?

        一般我们在Mybatis中使用查询语句的时候,如果查询到的结果不能使用resultType反应出来的时候,可以采用resultMap标签来解决数据查询不到的困难问题。

  2.为什么要使用resultMap

        当需要查询的数据用当前查询语句不能全部查询出来的时候,使用resultMap辅助查询,resultMap的作用就是在同一张表中进行我们所需要的二次查询,然后利用查询到的数据中的部分信息作为一次查询中的查询条件,从而帮助得到需要查询的数据。

  3.resultMap标签

其中type指代的是我们需要映射到的类对象,id表示resultMap在select标签中用的时候的id名称

id标签
这是设置主键使用的,使用此标签配置映射关系(可能不止一个)

result标签
这是一般属性用于配置映射关系使用的(一般不止一个)

association标签:
property:表示pojo类集合中的属性

select:表示所需要的那个类的查询语句

column:从resultMap中传过去用作查询的参数

ofType:集合属性中的对象(可以不写)

collection标签:
property:表示pojo类集合中的属性

select:表示所需要的那个类的查询语句

column:从resultMap中传过去用作查询的参数

ofType:集合属性中的对象(可以不写)

association和collection之间的区别就是前者是针对一个对象而言,后者是针对一个集合而言!
整个resultMap的功能总的来说:

当需要查询的数据用当前查询语句不能全部查询出来的时候,使用resultMap辅助查询,resultMap的作用就是在同一张表中进行我们所需要的二次查询,然后利用查询到的数据中的部分信息作为一次查询中的查询条件,从而帮助得到需要查询的数据。也可以叫做嵌套查询。

了解Mybatis框架中缓存的使用方法

1.什么是Mybatis缓存

MyBatis 是一个基于 Java 的持久层框架,它提供了多种方式来使用缓存,包括一级缓存和二级缓存。本文将介绍 MyBatis 中常见的缓存使用方式及其使用方法。

2.MyBatis 中如何使用缓存

 一级缓存

        MyBatis 中的一级缓存是指 SqlSession 的缓存,它默认是开启的。在同一个 SqlSession 中,如果执行了相同的 SQL 语句,那么 MyBatis 会从缓存中读取结果,而不是再次向数据库发起请求。下面是一个简单的示例:

在上面的示例代码中,首先读取了配置文件 mybatis-config.xml,然后通过 SqlSessionFactoryBuilder 将配置文件解析为 SqlSessionFactory 对象,最后通过 SqlSessionFactory 创建 SqlSession 对象。在 SqlSession 中,通过 getMapper 方法获取映射器接口的实例,然后就可以直接调用映射器接口中的方法执行 SQL 语句了。在第一次查询时,会从数据库中获取数据,并将结果存储在一级缓存中。在第二次查询时,会直接从一级缓存中获取数据。在更新数据后,需要清空一级缓存,否则会出现数据不一致的情况。

二级缓存

        除了一级缓存外,MyBatis 还提供了二级缓存,它是 SqlSessionFactory 的缓存。在多个 SqlSession 中共享同一个二级缓存,如果执行了相同的 SQL 语句,那么 MyBatis 会从缓存中读取结果,而不是再次向数据库发起请求。下面是一个简单的示例:

在上面的示例代码中,首先读取了配置文件 mybatis-config.xml,然后通过 SqlSessionFactoryBuilder 将配置文件解析为 SqlSessionFactory 对象,最后通过 SqlSessionFactory 创建 SqlSession 对象。在 SqlSession 中,通过 getMapper 方法获取映射器接口的实例,在多个 SqlSession 中共享同一个二级缓存。在第一次查询时,会从数据库中获取数据,并将结果存储在二级缓存中。在第二次查询时,会直接从二级缓存中获取数据。在更新数据后,需要清空二级缓存,否则会出现数据不一致的情况。

要启用二级缓存,需要在配置文件 mybatis-config.xml 中进行配置。下面是一个简单的配置示例:

在上面的配置文件中,首先开启了缓存功能,然后定义了一个类型别名 User,最后定义了一个缓存实现类 org.apache.ibatis.cache.impl.PerpetualCache。 

3. 自定义缓存

除了使用 MyBatis 提供的缓存实现类以外,还可以自定义缓存实现类。下面是一个简单的自定义缓存实现类示例:

在上面的示例代码中,实现了 MyBatis 的 Cache 接口,使用了一个 HashMap 作为缓存实现。

要使用自定义缓存,需要在配置文件 mybatis-config.xml 中进行配置。下面是一个简单的配置示例:

在上面的配置文件中,首先开启了缓存功能,然后定义了一个类型别名 User,最后定义了一个缓存实现类 com.example.MyCache,并指定了缓存实现类的 id。如果没有指定 id,则默认使用缓存实现类的类名作为 id。 

结论
MyBatis 提供了多种方式来使用缓存,包括一级缓存和二级缓存。一级缓存是 SqlSession 的缓存,它默认是开启的。二级缓存是 SqlSessionFactory 的缓存,需要在配置文件中进行配置。除了使用 MyBatis 提供的缓存实现类以外,还可以自定义缓存实现类。在使用缓存时,需要注意清空缓存,否则会出现数据不一致的情况。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值