mybatis延迟加载

2023-05-16

1、什么是延迟加载

在使用时候才加载数据,不用的时候不加载

2、关联对象是1时,采用立即加载;

      关联对象是多是,采用延迟加载

3、一对一(一对多)延迟加载步骤及配置

(1)SqlMapConfig.xml

  <!--配置参数-->
    <settings>
        <!--开启Mybatis支持延迟加载-->
        <setting name="lazyLoadingEnabled" value="true"/>
        <setting name="aggressiveLazyLoading" value="false"></setting>
    </settings>

(2)IUserdao.xml

   <!-- 定义User的resultMap-->
    <resultMap id="userAccountMap" type="user">
        <id property="id" column="id"></id>
        <result property="username" column="username"></result>
        <result property="address" column="address"></result>
        <result property="sex" column="sex"></result>
        <result property="birthday" column="birthday"></result>
        <!-- 配置user对象中accounts集合的映射 -->
        <collection property="accounts" ofType="account" select="com.itheima.dao.IAccountDao.findAccountByUid" column="id"></collection>
    </resultMap>


    <!-- 查询所有 -->
    <select id="findAll" resultMap="userAccountMap">
        select * from user
    </select>

    <!-- 根据id查询用户 -->
    <select id="findById" parameterType="INT" resultType="user">
        select * from user where id = #{uid}
    </select>

(3)IAccountDao.xml

    <!-- 定义封装account和user的resultMap -->
    <resultMap id="accountUserMap" type="account">
        <id property="id" column="id"></id>
        <result property="uid" column="uid"></result>
        <result property="money" column="money"></result>
        <!-- 一对一的关系映射:配置封装user的内容
        select属性指定的内容:查询用户的唯一标识:
        column属性指定的内容:用户根据id查询时,所需要的参数的值
        -->
        <association property="user" column="uid" javaType="user" select="com.itheima.dao.IUserDao.findById"></association>
    </resultMap>

 


    <!-- 查询所有 -->
    <select id="findAll" resultMap="accountUserMap">
        select * from account
    </select>

    <!-- 根据用户id查询账户列表 -->
    <select id="findAccountByUid" resultType="account">
        select * from account where uid = #{uid}
    </select>

4、缓存概念

适用缓存情况:

     经常查询并且不经常改变的数据,数据正确与否对最终结果影响不大

不适用缓存情况:

   经常查询并且经常改变的数据,数据正确与否对最终结果影响很大,商品库存,银行牌价

(1)一级缓存

是SQLSession对象的缓存,查询结果同时存入一级缓存,数据结构是Map,先查询一级缓存,然后再查询其它。SQLSession消失,一级缓存也消失

(2)二级缓存

是SQLSessionFactory对象的缓存,由同一个SQLSessionFactory对象创建的SqlSession共享缓存

使用步骤:让mybatis支持二级缓存(在SqlMapConfig.xml中配置)

    <settings>
        <setting name="cacheEnabled" value="true"/>
    </settings>
    

                  让当前的映射文件支持二级缓存(在IUserDao.xml中配置)

 <!--开启user支持二级缓存-->
    <cache/>

                 让当前的操作支持二级缓存(在select标签中配置)

   <!-- 根据id查询用户 -->
    <select id="findById" parameterType="INT" resultType="user" useCache="true">
        select * from user where id = #{uid}
    </select>

 

 

 

 

 

 

 

 

 

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mybatis延迟加载 的相关文章

  • Matlab下多径衰落信道的仿真

    衰落信道参数包括多径扩展和多普勒扩展 时不变的多径扩展相当于一个延时抽头滤波器 xff0c 而多普勒扩展要注意多普勒功率谱密度 xff0c 通常使用Jakes功率谱 高斯 均匀功率谱 多径衰落信道由单径信道叠加而成 xff0c 而单径信道中
  • linux安装Python3

    0 注 xff1a 进行安装时我使用的用户是超级用户root xff0c 如果你不是超级用户在有些命令的前面需要添加sudo xff0c 也可以使用su命令切换成超级用户 1 查看是否有Python3 xff08 有时候虽然有包含但还是一堆
  • chapter8——消抖技术

    目录 1 简介2 开关行为3 开关种类4 消抖5 消抖指南 1 简介 在电子设备内两个金属触点随着触点的断开闭合便产生了多个信号 xff0c 这就是抖动 消抖 是用以确保在每一次断开或闭合触点时只有一个信号起作用的硬件设备或软件 机械开关和
  • 全新的视图绑定工具 — ViewBinding 使用指南

    本文首发于微信公众号 Android开发之旅 xff0c 欢迎关注 xff0c 获取更多技术干货 Jetpack版Wan Android项目地址 xff1a Android Jetpack架构开发组件化应用实战 欢迎star Flutter
  • webstorm(2019)配置eslint规范

    在项目中我们为了代码书写更规范 xff0c 在项目中安装ESlint帮助我们检查语法 xff0c 那么下面介绍下在webstorm中如何配置ESlint规范 步骤如下 xff1a 1 快捷键 ctrl 43 alt 43 s打开设置 xff
  • 与线程同步以及线程调度相关的方法

    wait xff1a 使一个线程处于等待 xff08 阻塞 xff09 状态 xff0c 并且释放所持有的对象的锁 xff1b sleep xff1a 使一个正在运行的线程处于睡眠状态 xff0c 是一个静态方法 xff0c 调用此方法要处
  • MongoDB 的功能

    面向集合的存储 xff1a 适合存储对象及 JSON 形式的数据 动态查询 xff1a Mongo 支持丰富的查询表达式 查询指令使用 JSON 形式的标记 xff0c 可轻易查询文档中内嵌的对象及数组 完整的索引支持 xff1a 包括文档
  • Redis 有哪些特性?

    1 速度快 xff1a 使用标准 C 写 xff0c 所有数据都在内存中完成 xff0c 读写速度分别达到 10 万 20 万 2 持久化 xff1a 对数据的更新采用 Copy on write 技术 xff0c 可以异步地保存到磁盘上
  • 在树莓派4b上安装kali linux 2019.4并启用vnc服务

    安装 x11vnc 工具 root 64 kali apt install y x11vnc 设置密码 root 64 kali x11vnc storepasswd 设置服务 新建 lib systemd system x11vnc se
  • springboot整合⾕歌开源缓存框架Guava Cache使用

    Guava Cache使用 Guava Cache xff1a 歌开源缓存框架Guava Cache使用使用压测 具Jmeter5 x进行接口压力测试 xff1a 压测 具本地快速安装Jmeter5 x新增聚合报告 xff1a 线程组 gt
  • Android Studio之opencv极简环境配置(2022-1-30亲测有效)

    Android Studio之opencv环境配置 一 基础创建项目步骤二 OpenCv环境配置三 opencv体验 一 基础创建项目步骤 1 先创建一个app项目 2 选择Basic Activity 3 完成基础项目创建 4 运行一下看
  • VR游戏交互开发的一些体验

    VR游戏交互开发的一些体验 本文主要写Unity开发手游过程中VR交互输入控制的一些浅薄的经验交互方面 xff0c 头控和视线按钮依然较为主流 xff0c 可以获得传感器数据来获得输入除了实体按钮输入之外还可以探索其他交互方式 xff0c
  • python 实现批量post json数据测试

    服务器之前经常出现发消息就会宕机 xff0c 今天修改了部分之后 xff0c 就用python实现了一个批量post数据测试 直接上代码 url 是测试版 xff0c 你看到这份代码的时候 xff0c 应该已经不能用了 xff0c 童鞋需要
  • 函数

    xff08 1 xff09 模块是函数的集合 xff0c 类似于Java类 xff08 2 xff09 函数的作用 xff1a 提高代码复用性 xff08 3 xff09 函数的定义 xff1a def 函数名 代码 函数名符合命名规则 x
  • 元组

    xff08 1 xff09 tuple与列表类似 xff0c 不同之处在于元组不能修改 xff08 2 xff09 定于元组 xff0c 使用小括号 xff08 xff09 xff0c 数据之间用 xff0c 隔开 xff08 3 xff0
  • 字典

    xff08 1 xff09 描述物体的相关信息 xff08 2 xff09 字典是无序的对象集合 xff0c 列表是有序的对象集合 xff08 3 xff09 字典使用 定义 xff0c 使用键值对存储数据 xff0c 键值对之间用 xff
  • 字符串

    xff08 1 xff09 使用双引号定义字符串 xff08 2 xff09 使用单引号的情况 xff1a str 61 39 我的 强国号 xff08 3 xff09 字符串可以使用索引 xff0c 从 0 开始 str xff08 4
  • 大数据概述

    1 什么是大数据 xff1a 海量 xff0c 高增长率 xff0c 多样化 xff0c 分布式存储 43 分布式计算 43 弹性伸缩 2 大数据特征 xff1a Volume xff0c Variety xff0c Value xff0c
  • 大数据分析概述

    xff08 1 xff09 应用领域 xff1a 商业 制造业 媒体 趋势预测 决策支持 xff08 2 xff09 采集 ETL 实时数据采集 xff08 3 xff09 数据集成 xff1a 合并整理 xff0c 形成统一的数据视图 数
  • SQL概述

    xff08 1 xff09 方便各平台的数据库移植 xff0c 统一采用小写来定义数据库名和表名

随机推荐

  • 数据采集

    xff08 1 xff09 数据分类 xff1a 业务数据 xff0c 行业数据 xff0c 内容数据 xff0c 线上行为数据 xff0c 线下行为数据 xff08 2 xff09 数据来源 xff1a 企业系统 xff0c 机器系统 x
  • mybatis多表操作

    xff08 1 xff09 多表查询 用户和账户 xff0c 要求 xff1a 一个用户可以有多个账户 xff0c 一个账户只能属于一个用户 xff08 多个账户也可以属于同一个用户 xff09 步骤 xff1a 1 建立两张表 xff1a
  • centos .sh文件无法执行

    到sh文件目录下执行 sed i s r sh
  • Maven学习笔记

    xff08 1 xff09 标准目录结构 src main java目录 xff1a 核心代码部分 src main resources xff1a 配置文件部分 src test java xff1a 测试代码部分 src test re
  • JSTL学习笔记

    xff08 1 xff09 概念 xff1a JavaServer Pages Tag Library jsp标准标签库 xff08 2 xff09 作用 xff1a 用于简化和替换jsp页面上的Java代码 xff08 3 xff09 使
  • idea 开启 tomcat 热部署 的 具体流程 和 使用方式

    idea 开启 tomcat 热部署 的 具体流程 和 使用方式 https www cnblogs com c2g5201314 p 12275243 html https blog csdn net qq 41288095 articl
  • java 判断字符串是否为空

    四种判断为空表示方式 xff1a 1 str 61 61 null 2 34 34 equals str 3 str length 61 61 0 4 str isEmpty 1234 代码中的四种不为空的运用 xff1a if str 6
  • springmvc返回值

    xff08 1 xff09 返回字符串 xff08 2 xff09 void xff08 3 xff09 返回ModelAndView 把user对象存储到mv对象中 xff0c 也会把user对象存入到request对象 mv addOb
  • springmvc上传下载

    xff08 1 xff09 form表单的enctype取值是 xff1a multipart form data xff0c method取值是 xff1a post xff0c 提供一个文件选择域 xff08 2 xff09 sprin
  • 数据库多表和范式

    xff08 1 xff09 一对多的关系 xff1a 一个部门可以有多个员工 xff0c 一个员工只能属于一个部门 在多的一方建立外键 xff0c 指向1的一方的主键 xff08 2 xff09 多对多关系 课程 学生 中间表 xff0c
  • springjdbc学习笔记

    xff08 1 xff09 导包 xff08 2 xff09 创建jdbcTemplate xff0c 依赖数据源DataSource 实例化的时候需要传入DataSource jdbcTemplate 61 new JdbcTemplat
  • MySQL多表操作

    xff08 1 xff09 笛卡尔积 xff1a 两个集合的所有组合 xff1a select from 表1 xff0c 表2 xff08 2 xff09 内连接查询 xff1a 隐式内连接 xff1a select from 表1 xf
  • MySQL事务

    xff08 1 xff09 概念 xff1a 一个包含多个步骤业务操作 xff0c 被事务管理 xff0c 这些操作具有统一性 xff08 要么成功 xff0c 要么失败 xff09 操作开启事务 xff08 start transacti
  • 软件产品化

    1 产品化定义 xff1a 软件产品化是指客户无需为软件添加或调整代码和语句即能完成软件的安装配置 应用初始化 系统管理 用户使用的全过程 xff0c 并且软件至少能满足80 以上的用户某一组应用需求 微软Office或杀毒软件就是产品化软
  • MySQL忘记root密码

    1 cmd gt net stop mysql 停止mysql服务 需要管理员运行该cmd 2 使用无验证方式启动mysql服务 xff1a mysqld skip grant tables 3 打开新的cmd窗口 直接输入mysql命令
  • 对象转型

    一 对象转型介绍 对象转型分为两种 xff1a 一种叫向上转型 父类对象的引用或者叫基类对象的引用指向子类对象 xff0c 这就是向上转型 xff0c 另一种叫向下转型 转型的意思是 xff1a 如把float类型转成int类型 xff0c
  • 获取文件的真实(服务器)路径

  • jQuery选择器

    1 基本选择器 标签选择器 xff08 元素选择器 xff09 xff0c 语法 xff1a 34 html标签名 34 id选择器 xff0c 语法 xff1a 34 id的属性值 34 类选择器 xff0c 语法 xff1a 34 cl
  • MySQL8:Unknown initial character set index ‘255‘ received from server. Initial client character 解决方法

    Unknown initial character set index 39 255 39 received from server Initial client character set can be forced via the 39
  • mybatis延迟加载

    1 什么是延迟加载 在使用时候才加载数据 xff0c 不用的时候不加载 2 关联对象是1时 xff0c 采用立即加载 xff1b 关联对象是多是 xff0c 采用延迟加载 3 一对一 xff08 一对多 xff09 延迟加载步骤及配置 xf