当前位置: 首页 > news >正文

有效的网站优化/磁力岛

有效的网站优化,磁力岛,珠海网站建设方案维护,怎么用网络推广Mybatis返回值接收 可以使用两种方式进行参数的接收 resultTyperesultMap 这两种分别都是需要在Mapper.xml文件中去设置的 当结果是一个简单的对象或者list或者map,对象中没有嵌套对象,或者集合时,就可以直接使用resultType 反之如果需要…

Mybatis返回值接收

可以使用两种方式进行参数的接收

  • resultType
  • resultMap

这两种分别都是需要在Mapper.xml文件中去设置的

当结果是一个简单的对象或者list或者map,对象中没有嵌套对象,或者集合时,就可以直接使用resultType

反之如果需要返回的值是一个复杂对象,其中包含list或者map的时候,就需要使用resultMap去确定返回值格式

1 使用 resultType

<sql id="basicSelect">id,name,age,address,emp_detail
</sql>
  • 查询单个Map对象

    <select id="selectUsers" resultType="map">select id, username, hashedPasswordfrom some_tablewhere id = #{id}
    </select>
    
    Map selectUsers(Long id);
    
  • 查询具体单个对象

    <select id="selectEmpById" resultType="cn.sycoder.domain.Employee">select<include refid="basicSelect"></include>from employee  where id = #{id}</select>
    <!--    定义sql-->
    <sql id="basicSelect">id,name,age,address,emp_detail
    </sql>
    
    Employee selectEmpById(Long id);
    
  • 查询集合对象

    <select id="selectEmp" resultType="cn.sycoder.domain.Employee">select<include refid="basicSelect"></include>from employeewhere id = #{id}
    </select>
    
    List<Employee> selectEmp(Long id);
    
  • 查询单个值

    <select id="selectCount" resultType="java.lang.Integer">select count(*) from employee
    </select>
    
    Integer selectCount();
    

2 使用 resultMap

2.1 简单使用

  • 应用场景:实体类属性和数据库列名不匹配的时候(比如,数据库采用经典命名法,java 使用驼峰命名法的时候)

    <resultMap id="basicMap" type="cn.sycoder.domain.Employee">
    <!--        设置数据库id 的对应字段--><id property="id" column="id"></id><result property="empDetail" column="emp_detail"></result><result property="name" column="name"></result></resultMap><select id="selectEmpById" resultMap="basicMap">select<include refid="basicSelect"></include>from employee  where id = #{id}</select>
    

    在这里插入图片描述

  • 解决方式2

       <settings><setting name="mapUnderscoreToCamelCase" value="true"/></settings>
    
  • id & result
    <id property="id" column="post_id"/>
    <result property="subject" column="post_subject"/>
    
  • id & result 属性

    属性描述
    property映射到列结果的字段或属性。如果 JavaBean 有这个名字的属性(property),会先使用该属性。否则 MyBatis 将会寻找给定名称的字段(field)。无论是哪一种情形,你都可以使用常见的点式分隔形式进行复杂属性导航。 比如,你可以这样映射一些简单的东西:“username”,或者映射到一些复杂的东西上:“address.street.number”。 stu.name
    column数据库中的列名,或者是列的别名。一般情况下,这和传递给 resultSet.getString(columnName) 方法的参数一样。
    javaType一个 Java 类的全限定名,或一个类型别名(关于内置的类型别名,可以参考上面的表格)。 如果你映射到一个 JavaBean,MyBatis 通常可以推断类型。然而,如果你映射到的是 HashMap,那么你应该明确地指定 javaType 来保证行为与期望的相一致。

2.2多结果集处理前期准备

  • 新建学生和班级表

    在这里插入图片描述

    在这里插入图片描述

    create table class
    (id bigint auto_incrementprimary key,name varchar(64) null
    );create table student
    (id bigint auto_incrementprimary key,name varchar(64) null,age int null,class_id bigint null,constraint student_class_id_fkforeign key (class_id) references class (id)
    );insert into class values (null,'软工1班'),(null,'计科2班');insert into student (id, name, age,class_id)
    values (null,'sy',18,1),(null,'zs',19,1),(null,'zz',20,1),(null,'小明',22,2);

2.3一对多处理

  • collection :使用 collection 就可以获取到多个结果集对象

  • 一个班级对应多个学生

  • 操作

    • 第一步,新建 mapper 方法

      public interface ClassMapper {MyClass getById(Long id);
      }
      
    • 第二步,编写 xml

      <resultMap id="basicMap" type="cn.sycoder.domain.MyClass"><id property="id" column="id"></id><result property="name" column="name"></result>
      <!--        获取学生信息信息--><collection property="stus" ofType="cn.sycoder.domain.Student"><id property="id" column="sId"></id><result property="name" column="sName"></result><result property="age" column="age"></result><result property="classId" column="class_id"></result></collection></resultMap><select id="getById" resultMap="basicMap">selectc.*,s.id sId,s.name sName,s.age,s.class_idfromclass c left join student s on c.id = s.class_idwhere c.id = #{id}</select>
      

2.4多对一的处理

  • 关联(association):如果我的类里面有其它对象的关联关系,可以使用 association 来进行操作

    属性描述
    property映射到列结果的字段或属性。如果用来匹配的 JavaBean存在给定名字的属性,那么它将会被使用。否则 MyBatis 将会寻找给定名称的字段。无论是哪一种情形,你都可以使用通常的点式分隔形式进行复杂属性导航。比如,你可以这样映射一些简单的东西:“username”,或者映射到一些复杂的东西上:“address.street.number”。
    javaType一个 Java 类的完全限定名,或一个类型别名(关于内置的类型别名,可以参考上面的表格)。 如果你映射到一个 JavaBean,MyBatis 通常可以推断类型。然而,如果你映射到的是HashMap,那么你应该明确地指定 javaType 来保证行为与期望的相一致。
  • 传统操作

    • 使用级联操作

       <resultMap id="basicMap" type="cn.sycoder.domain.Student"><id property="id" column="id"></id><result property="name" column="name"></result><result property="age" column="age"></result><result property="classId" column="class_id"></result><result property="cls.id" column="cId"></result><result property="cls.name" column="cName"></result></resultMap><select id="listAllStus" resultMap="basicMap">selectstu.*,c.id cId,c.name cNamefromstudent stu left join class c on stu.class_id = c.id</select>
      
  • 使用 association 操作

    • 代码

      <resultMap id="AssociationMap" type="cn.sycoder.domain.Student"><id property="id" column="id"></id><result property="name" column="name"></result><result property="age" column="age"></result><result property="classId" column="class_id"></result><association property="cls" javaType="cn.sycoder.domain.MyClass"><id property="id" column="cId"></id><result property="name" column="cName"></result></association></resultMap><select id="listAllStusByAssociation" resultMap="AssociationMap">selectstu.*,c.id cId,c.name cNamefromstudent stu left join class c on stu.class_id = c.id</select>
      

3 嵌套 select 查询

  • 以多条sql 的方式执行

3.1关联关系 assciation select

  • 查询学生信息,包含班级信息

    <resultMap id="AssociationSelectMap" type="cn.sycoder.domain.Student"><id property="id" column="id"></id><result property="name" column="name"></result><result property="age" column="age"></result><result property="classId" column="class_id"></result><association property="cls" column="class_id"select="cn.sycoder.mapper.StudentMapper.getClassById"/></resultMap><select id="listAllStusByAssociationSelect" resultMap="AssociationSelectMap">select * from student</select><select id="getClassById" resultType="cn.sycoder.domain.MyClass">select * from class where id = #{id}</select>
    
  • 如果关联的是多个结果集使用 resultSet

    属性描述
    column当使用多个结果集时,该属性指定结果集中用于与 foreignColumn 匹配的列(多个列名以逗号隔开),以识别关系中的父类型与子类型。
    foreignColumn指定外键对应的列名,指定的列将与父类型中 column 的给出的列进行匹配。
    resultSet指定用于加载复杂类型的结果集名字。
    <resultMap id="blogResult" type="Blog"><id property="id" column="id" /><result property="title" column="title"/><association property="author" javaType="Author" resultSet="authors" column="author_id" foreignColumn="id"><id property="id" column="id"/><result property="username" column="username"/><result property="password" column="password"/><result property="email" column="email"/><result property="bio" column="bio"/></association>
    </resultMap>
    

3.2 collection select

  • 需求:通过班级去查学生,使用嵌套 select 查询

    <resultMap id="collectionSelect" type="cn.sycoder.domain.MyClass"><id property="id" column="id"></id><result property="name" column="name"></result><!--        获取学生信息信息--><collection property="stus" ofType="cn.sycoder.domain.Student"select="getStudentByClassId"    column="id"/></resultMap><select id="getByClassId" resultMap="collectionSelect">select * from class where id = #{id}</select><select id="getStudentByClassId" resultType="cn.sycoder.domain.Student">select * from student where class_id = #{id}</select>
    

3.3 关联查询的总结

  • 优点:
    • 可以实现延迟加载,前提是要配置
    • sql 写起来变得简单了
  • 缺点:
    • 发起了多条 sql,正常查询只发起一条sql

相关文章:

Java_mybatis-结果集映射-ResultTypeResultMap

Mybatis返回值接收 可以使用两种方式进行参数的接收 resultTyperesultMap 这两种分别都是需要在Mapper.xml文件中去设置的 当结果是一个简单的对象或者list或者map&#xff0c;对象中没有嵌套对象&#xff0c;或者集合时&#xff0c;就可以直接使用resultType 反之如果需要…...

【Java】MySQL存储 MD5 值应该用 VARCHAR 还是CHAR?

CHAR 非常适合存储 MD5 值。因为MD5 值是一个定长的值&#xff0c;对于固定长度的非常短的列&#xff0c;CHAR比VARCHAR的效率更高。 CHAR和VARCHAR的区别: 1)存储长度不同&#xff0c;CHAR 的长度是固定的&#xff0c;VARCHAR 的长度是可变的 假设&#xff0c;当我们定义 CHA…...

pytorch中五种常用随机矩阵构造方法:rand、randn、randn_like、randint、randperm

1 torch.rand&#xff1a;构造均匀分布张量 torch.rand是用于生成均匀随机分布张量的函数&#xff0c;从区间[0,1)的均匀分布中随机抽取一个随机数生成一个张量&#xff0c;其调用方法如下所示&#xff1a; torch.rand(sizes, outNone) ➡️ Tensor 参数&#xff1a; sizes&…...

2023第二届全国大学生数据分析大赛A完整原创论文(含摘要+问题分析+模型建立与求解+python代码)

大家好&#xff0c;从昨天肝到现在&#xff0c;终于完成了2023第二届全国大学生数据分析大赛A题某电商平台用户行为分析与挖掘的完整论文啦。 给大家看一下目录吧&#xff1a; 目录 摘 要&#xff1a; 10 一、问题重述 12 二&#xff0e;问题分析 13 2.1问题一 13 2.2问…...

Qt 面试指南

一、c基础知识 1、进程和线程的同步方式 进程&#xff1a;1&#xff09;管道&#xff0c;是内核里的一串缓存 2&#xff09;消息队列 3&#xff09;共享内存 4&#xff09;信号量机制 5&#xff09;信号 6&#xff09;socket 线程&#xff1a;1&#xff09;等待通知机制 2&…...

开利网络的数字化技术加持下,加快扶贫和乡村振兴的效果和进程!

今日&#xff0c;来自山区省份的从事公益、区域民族文化传播、帮扶贫困地区脱贫、农业兴村贵州项目组一行来开利进行数字化脱贫、帮助乡村振兴解决方案探讨交流&#xff0c;交流中&#xff0c;开利网络总结出历经多年实践验证且行之有效的数字化经营、数字化建设经验得到与会成…...

PR剪辑视频做自媒体添加字幕快速方式(简单好用的pr视频字幕模板)

如何选择合适的字幕添加进短视频呢&#xff1f;首先要先确定增加的视频风格&#xff0c;简约、商务、科技感、炫酷&#xff1b;再确定用途&#xff0c;注释、标记、语音翻译、引用、介绍&#xff1b;最后在相应的模板中挑选几个尝试&#xff0c;悬着一个最切合主题的使用&#…...

金融行业文件摆渡,如何兼顾安全和效率?

金融行业是数据密集型产业&#xff0c;每时每刻都会产生海量的数据&#xff0c;业务开展时&#xff0c;数据在金融机构内部和内外部快速流转&#xff0c;进入生产的各个环节。 为了保障基础的数据安全和网络安全&#xff0c;金融机构采用网络隔离的方式来隔绝外部网络的有害攻击…...

[足式机器人]Part2 Dr. CAN学习笔记-自动控制原理Ch1-1开环系统与闭环系统Open/Closed Loop System

本文仅供学习使用 本文参考&#xff1a; B站&#xff1a;DR_CAN Dr. CAN学习笔记-自动控制原理Ch1-1开环系统与闭环系统Open/Closed Loop System EG1: 烧水与控温水壶EG2: 蓄水与最终水位闭环控制系统 EG1: 烧水与控温水壶 EG2: 蓄水与最终水位 h ˙ q i n A − g h A R \dot{…...

每日一题,杨辉三角

给定一个非负整数 numRows&#xff0c;生成「杨辉三角」的前 numRows 行。 示例 1: 输入: numRows 5 输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]] 示例 2: 输入: numRows 1 输出: [[1]]...

Java_Mybatis_缓存

缓存 1.概述 Mybatis 缓存&#xff1a;MyBatis 内置了一个强大的事务性查询缓存机制&#xff0c;它可以非常方便地配置和定制 2.会话缓存&#xff08;一级缓存&#xff09; sqlSession 级别的&#xff0c;也就是说&#xff0c;使用同一个 sqlSession 查询同一 sql 时&#x…...

C#基础面试题集

C#基础 1. 简述值类型和引用类型有什么区别2. C# String类型比 stringBuilder 类型的优势是什么?3.面向对象的三大特点4.请简述private&#xff0c;public&#xff0c;protected&#xff0c;internal的区别5.结构体和类6.请描述Interface与抽象类之间的不同7.在类的构造函数前…...

可视化监管云平台EasyCVR宠物粮食食品厂智能视频监控方案

由于我国养宠物群体的不断膨胀&#xff0c;宠物市场也占据了经济的很大一部分&#xff0c;宠物做为人类的好朋友&#xff0c;可以给人们带来极高的精神抚慰&#xff0c;作为“毛孩子”家长&#xff0c;爱宠人士自然不会亏待自家宠物&#xff0c;都会选择最好的口粮以供宠物食用…...

ArkUI组件

目录 一、概述 声明式UI 应用模型 二、常用组件 1、Image&#xff1a;图片展示组件 示例 配置控制授权申请 2、Text&#xff1a;文本显示组件 示例 3、TextInput&#xff1a;文本输入组件 示例 4、Button&#xff1a;按钮组件 5、Slider&#xff1a;滑动条组件 …...

C语言--动态内存【详细解释】

一.动态内存介绍&#x1f357; 在C语言中&#xff0c;动态内存分配是指在程序运行时根据需要动态申请内存空间&#xff0c;以便在程序的不同阶段存储和使用数据。动态内存的分配与释放需要一组函数来实现&#xff0c;包括malloc、calloc、realloc和free。 malloc: 函数用于分配…...

施工现场安全管理系统

伴随着社会发展&#xff0c;各行各业都十分注重安全生产管理&#xff1b;建筑施工行业&#xff0c;由于施工环境具有复杂性、危险源较多、施工人员素质参差不齐等因素&#xff0c;导致安全事故时有发生&#xff1b;凡尔码施工安全管理系统&#xff0c;灵活根据施工现场管理要求…...

电线电缆行业生产管理MES系统解决方案

电线电缆行业生产管理mes系统核心功能 基础数据管理&#xff1a;对基础数据进行统一管理&#xff0c;包括组织架构、原材料数据、设备数据、报工数据、检验数据、员工数据等工艺与BOM管理&#xff1a;对工艺标准进行统一管理&#xff0c;包括工艺的版本管理、关联型号管理&…...

滑动窗口最大值和前K个高频元素

滑动窗口最大值和前K个高频元素 239. 滑动窗口最大值 核心&#xff1a;建立一个单调队列&#xff0c;维护里面的最大值&#xff0c;并且从大到小的顺序即可&#xff01;【只需要维护有可能成为窗口里最大值的元素就可以了&#xff0c;同时保证队列里的元素数值是由大到小的。…...

C语言实现在顺序表中找到最大值

用C语言实现在顺序表中找到最大值&#xff1a; #include <stdio.h> #define MAX_SIZE 100 int findMax(int arr[], int size) { int max arr[0]; // 假设第一个元素为最大值 for (int i 1; i < size; i) { // 从第二个元素开始遍历列表 if (…...

数字工厂管理系统建设层级分为哪几层

随着工业4.0时代的到来&#xff0c;数字工厂已成为制造业转型升级的必经之路。数字工厂管理系统作为数字工厂的核心组成部分&#xff0c;对于提高生产效率、降低成本、提升质量等方面具有重要意义。数字工厂管理系统的建设层级一般分为以下几个层次&#xff0c;本文将对其进行详…...

MySQL 8 update语句更新数据表里边的数据

数据重新补充 这里使用alter table Bookbought.bookuser add userage INT after userphone;为用户表bookuser在userphone列后边添加一个类型为INT的新列userage。 使用alter table Bookbought.bookuser add sex varchar(6) after userage ;为用户表bookuser在userage 列后边添…...

可视化监控云平台/智能监控平台EasyCVR国标设备开启音频没有声音是什么原因?

视频云存储/安防监控EasyCVR视频汇聚平台基于云边端智能协同&#xff0c;支持海量视频的轻量化接入与汇聚、转码与处理、全网智能分发、视频集中存储等。GB28181视频平台EasyCVR拓展性强&#xff0c;视频能力丰富&#xff0c;具体可实现视频监控直播、视频轮播、视频录像、云存…...

L1-039:古风排版

题目描述 中国的古人写文字&#xff0c;是从右向左竖向排版的。本题就请你编写程序&#xff0c;把一段文字按古风排版。 输入格式&#xff1a; 输入在第一行给出一个正整数N&#xff08;<100&#xff09;&#xff0c;是每一列的字符数。第二行给出一个长度不超过1000的非空字…...

树莓派新手装机指南

如果你决定买一个树莓派&#xff0c;那么你一定已经了解过&#xff0c;不需要再做多余的介绍&#xff0c;由于之前就玩过树莓派&#xff0c;还是想弄一个属于自己的树莓派&#xff0c;因为它就像一个微型电脑&#xff0c;耗电非常低&#xff0c;我可以在家里24小时开机&#xf…...

flink使用事件时间时警惕kafka不同分区的事件时间倾斜问题

背景 flink和kafka的消息组合消费模式几乎是实时流处理的标配&#xff0c;然后当在flink中使用事件时间处理时&#xff0c;需要注意kafka不同分区元素之间时间相差太大的问题&#xff0c;这样有可能会导致严重的数据堆积问题 kafka不同分区元素事件时间差异较大导致的问题 总…...

『App自动化测试之Appium基础篇』| Desired Capabilities详解与使用

App自动化测试之Appium基础篇』| Desired Capabilities详解与使用 1 关于appium driver2 安装appium driver3 安装Appium Python Client4 安装测试对象5 获取测试对象信息5.1 使用dumpsys5.2 使用AndroidKiller5.3 使用aapt 6 Capabilities详解6.1 Capabilities介绍6.2 automat…...

vscode插件webview和插件通信

如果你要在 VS Code 插件的 WebView 中调用插件中的方法&#xff0c;可以使用 vscode.postMessage API。具体步骤如下&#xff1a; 在插件中&#xff0c;在创建 WebView 时&#xff0c;指定一个 onDidReceiveMessage 回调方法&#xff0c;该方法会在 WebView 中调用 vscode.po…...

【STM32单片机】贪吃蛇游戏设计

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用STM32F103C8T6单片机控制器&#xff0c;使用IIC OLED模块、按键等。 主要功能&#xff1a; 系统运行后&#xff0c;OLED显示游戏界面&#xff0c;可通过K1-K4键控制蛇的方向&#xff0c;当蛇吃…...

【Java 基础】32 定时调度

文章目录 Timer 类创建 Timer注意事项 ScheduledExecutorService 接口创建 ScheduledExecutorService注意事项 选择合适的定时调度方式Timer 的适用场景ScheduledExecutorService 的适用场景 总结 在软件开发中&#xff0c;定时任务是一种常见的需求&#xff0c;用于周期性地执…...

C++ 教程 - 02 复合数据类型

文章目录 数组vector字符串输入输出结构体枚举指针引用综合案例 数组 相同类型的数据的集合{ }&#xff0c;通过索引访问元素&#xff1b;在内存中连续存储&#xff0c;属于顺序表&#xff1b;插入、删除时间复杂度 O ( n ) O(n) O(n)&#xff0c;访问复杂度 O ( 1 ) O(1) O(1…...