24.11.26 Mybatis2

resultMap 中的标签和属性

如果是主键列 一般用id标签对应   propertyjava对象的属性  column 数据库中的列( javaType实体类数据类型 jdbcType数据库列的数据类型 ) 不需要配置 <id property="empno" column="empno"  />如果是普通列 一般用result对应  propertyjava对象的属性  column 数据库中的列
<result property="ename" column="ename" />

高级映射 (映射数据与对象的对应关系) 如果列不指定 不能自动对应

通常搭配继承一起使用 体现基础字段的对应

association 对应某个实体对象

Emp对象中 有部门信息 在java中 包含一个Dept对象

package com.javasm.entity;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;import java.util.Date;
import java.io.Serializable;/*** (Emp)实体类** @author makejava* @since 2024-11-26 09:40:43*/@Data
@NoArgsConstructor
@AllArgsConstructor
public class Emp implements Serializable {private static final long serialVersionUID = -16018027389934188L;private Integer empno;private String ename;private String job;private Integer mgr;private String hiredate;private Double sal;private Double comm;//关联部门信息private Dept dept;//    private Integer deptno;
//
//
//    private String dname;
//
//    private String loc;}

映射文件配置

<resultMap id="EmpMapBasMap" type="com.javasm.entity.Emp" >
<!--   主键列用id    -->
<!--        实体类属性名       数据库列      ( javaType实体类数据类型  jdbcType数据库列的数据类型 ) 不需要配置           --><id property="empno" column="empno"  />
<!--   其他列用result    --><result property="ename" column="ename" /><result property="job" column="job" /><result property="mgr" column="mgr" /><result property="hiredate" column="hiredate" /><result property="sal" column="sal" /><result property="comm" column="comm" /></resultMap><resultMap id="EmpMapWithDept" extends="EmpMapBasMap" type="com.javasm.entity.Emp" ><!--            实体类属性名     数据库列     --><!--   高级映射(对象映射标签)  需要手动指定所有字段association  解析resultSet数据时 可以创建多个对象collection配置关联的对象     --><association property="dept" javaType="com.javasm.entity.Dept"><id property="deptno" column="deptno"  /><result property="dname" column="dname" /><result property="loc" column="loc" /></association></resultMap>

通过sql语句 把需要的数据查询出来

select * from emp e,dept d where e.deptno = d.deptno

collection 对应集合

每个Dept中都有多个Emp List<Emp>

每个部门有多个员工 部门对象中 包含Emp的集合

package com.javasm.entity;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;import java.util.List;@Data
@NoArgsConstructor
@AllArgsConstructor
public class Dept {private Integer deptno;private String dname;private String loc;//多方的数据集合private List<Emp> emps;}

映射配置

<!-- 基础字段映射 --><resultMap id="DeptBasMap" type="com.javasm.entity.Dept" ><id property="deptno" column="deptno"  /><result property="dname" column="dname" /><result property="loc" column="loc" /></resultMap><resultMap id="DeptWithEmps" extends="DeptBasMap" type="com.javasm.entity.Dept">
<!--    聚合 对应集合对象    --><collection property="emps" ofType="com.javasm.entity.Emp"><id property="empno" column="empno"  /><result property="ename" column="ename" /><result property="job" column="job" /><result property="mgr" column="mgr" /><result property="hiredate" column="hiredate" /><result property="sal" column="sal" /><result property="comm" column="comm" /></collection></resultMap>

sql语句

select * from dept d left join emp e on  d.deptno  = e.deptno
order by d.deptno

2数据库关联查询

表有数据关联时 需要做关联查询

-- 连表查询

-- 简化语法 使用内连接 
select * from emp e,dept d where e.deptno = d.deptno 
-- 标准sql语法 内连接
select * from emp e INNER JOIN dept d on e.deptno = d.deptno
-- 外连接 left right 哪一方显示全集
select d.*,e.* from emp e right join dept d on e.deptno = d.deptno 
order by d.deptnoselect * from dept d left join emp e on  d.deptno  = e.deptno
order by d.deptno

-- 如果是内连接 连表顺序无影响-- 如果做外联 连表顺序 有影响

多表关联时 全集方向保持一致

3.数据库对应关系 java对象对应关系

一对一情况下

java中 双方对象 都包含对方的对象 mybatis中使用 association 配置结果

一对多情况下

多方 包含一方的集合 collection配置

dept ----> list<emp>

class(班级) -----> list<student>

一方 关联多方的对象 association配置

emp -----> dept

student ---> class(班级)

多对多情况下

双方都是对方的集合 collection配置

order ----> list<productInfo>

productInfo -->list<Order>

总结:

java中 对象之间的关系

对象中包含某个其他对象 association

对象中包含集合其他对象 collection

4自连接

自连接 需要起别名 通过别名 让mybatis识别哪些是内层 哪些是外层

高级映射标签 association collection 可以多次 和嵌套使用

查省市对应关系数据

select ta2.*,ta1.code AS subcode ,ta1.name AS subname ,ta1.pcode AS subpcode  from tb_area ta1 inner join tb_area ta2 on ta1.pcode = ta2.code
where ta2.pcode = 0

映射文件

<resultMap id="TbAreaMap" type="com.javasm.entity.TbArea" ><id property="code" column="code" jdbcType="INTEGER"/><result property="name" column="name" jdbcType="VARCHAR"/><result property="pcode" column="pcode" jdbcType="INTEGER"/><collection property="subArea" ofType="com.javasm.entity.TbArea"><id property="code" column="subcode" jdbcType="INTEGER"/><result property="name" column="subname" jdbcType="VARCHAR"/><result property="pcode" column="subpcode" jdbcType="INTEGER"/></collection></resultMap>

查省市县对应关系数据

select ta3.*,ta2.code AS citycode ,ta2.name AS cityname ,ta2.pcode AS citypcode ,ta1.code AS areacode ,ta1.name AS areaname ,ta1.pcode AS areapcode  from tb_area ta1 inner join tb_area ta2 on ta1.pcode = ta2.codeinner join tb_area ta3 on ta2.pcode = ta3.code

映射文件

<resultMap id="TbAreaMap2" type="com.javasm.entity.TbArea" ><id property="code" column="code" jdbcType="INTEGER"/><result property="name" column="name" jdbcType="VARCHAR"/><result property="pcode" column="pcode" jdbcType="INTEGER"/><collection property="subArea" ofType="com.javasm.entity.TbArea"><id property="code" column="citycode" jdbcType="INTEGER"/><result property="name" column="cityname" jdbcType="VARCHAR"/><result property="pcode" column="citypcode" jdbcType="INTEGER"/><collection property="subArea" ofType="com.javasm.entity.TbArea"><id property="code" column="areacode" jdbcType="INTEGER"/><result property="name" column="areaname" jdbcType="VARCHAR"/><result property="pcode" column="areapcode" jdbcType="INTEGER"/></collection></collection></resultMap>


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/62018.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第六届国际科技创新学术交流大会暨新能源科学与电力工程国际(NESEE 2024)

重要信息 会议官网&#xff1a;nesee.iaecst.org 会议时间&#xff1a;2024年12月6-8日 会议地点&#xff1a; 中国-广州&#xff08;越秀国际会议中心) 大会简介 新能源科学与电力工程国际学术会议&#xff08;NESEE 2024&#xff09;作为第六届国际科技创新学术交流大会分…

随笔20241126 Kafka 消费者的自动提交与手动提交偏移量详解

Kafka 是一种流行的分布式消息系统&#xff0c;用于处理大量实时数据。消费者在消费消息时&#xff0c;需要跟踪其消费的位置&#xff08;即偏移量&#xff0c;offset&#xff09;。对于 Kafka 消费者来说&#xff0c;偏移量的提交是至关重要的&#xff0c;因为它决定了消费者在…

Vue.js 指令详解:v-bind, v-html, v-once, v-on, v-if, v-else-if, v-else 和 v-model

Vue.js 是一个用于构建用户界面的渐进式框架&#xff0c;它通过一系列的指令来实现数据与 DOM 的绑定。在本篇博客中&#xff0c;我们将通过一个示例来介绍 Vue 3 中的一些常用指令&#xff1a;v-bind, v-html, v-once, v-on, v-if, v-else-if, v-else 和 v-model。 1. v-bind…

【es6】原生js在页面上画矩形添加选中状态高亮及显示调整大小控制框(三)

接上篇文章&#xff0c;这篇实现下选中当前元素显示调整大小的控制框&#xff0c;点击document取消元素的选中高亮状态效果。 实现效果 代码逻辑 动态生成控制按钮矩形,并设置响应的css // 动态添加一个调整位置的按钮addScaleBtn(target) {const w target.offsetWidth;con…

文心一言与千帆大模型平台的区别:探索百度AI生态的双子星

随着人工智能技术的迅猛发展&#xff0c;越来越多的公司开始投入资源开发自己的AI解决方案。在中国&#xff0c;百度作为互联网巨头之一&#xff0c;不仅在搜索引擎领域占据重要位置&#xff0c;还在AI领域取得了显著成就。其中&#xff0c;“文心一言”和“千帆大模型平台”便…

【西瓜书】神经网络-MP神经元、感知机和多层网络

神经网络&#xff08;neural networks&#xff09;的定义&#xff1a;神经网络是由具有适应性的简单单元组成的广泛并行互联的网络&#xff0c;它的组织能够模拟生物神经系统对真实世界物体所作出的交互反应。&#xff08;T. Kohonen 1988年在Neural Networks创刊号上给出的定义…

Java的日期和时间的格式化

目录 引言 使用SimpleDateFormat 使用DateTimeFormatter 格式化模式 注意事项 引言 在Java中&#xff0c;日期和时间的格式化是通过java.text.SimpleDateFormat类或更现代的java.time.format.DateTimeFormatter类来实现的。随着Java 8的发布&#xff0c;推荐使用java.time…

Linux进程与资源管理

在Linux学习&#xff0c;进行各种操作过程中需要用到很多种命令&#xff0c;本篇主要讲Linux进程与资源管理命令仅供大家参考。绝对是干货满满的一篇文章&#xff01;&#xff01;&#xff01; Linux进程与资源管理命令&#xff1a; 提示&#xff1a;以下是本篇文章正文内容&am…

《基于FPGA的便携式PWM方波信号发生器》论文分析(三)——数码管稳定显示与系统调试

一、论文概述 基于FPGA的便携式PWM方波信号发生器是一篇由任青颖、庹忠曜、黄洵桢、李智禺和张贤宇 等人发表的一篇期刊论文。该论文主要研究了一种新型的信号发生器&#xff0c;旨在解决传统PWM信号发生器在移动设备信号调控中存在的精准度低和便携性差的问题 。其基于现场可编…

一个专为云原生环境设计的高性能分布式文件系统

大家好&#xff0c;今天给大家分享一款开源创新的分布式 POSIX 文件系统JuiceFS&#xff0c;旨在解决海量云存储与各类应用平台&#xff08;如大数据、机器学习、人工智能等&#xff09;之间高效对接的问题。 项目介绍 JuiceFS 是一款面向云原生设计的高性能分布式文件系统&am…

【JavaScript】图解JS中的字符串方法

&#x1f4af; 欢迎光临清清ww的博客小天地&#x1f4af; &#x1f525; 个人主页:【清清ww】&#x1f525; &#x1f4da; 系列专栏:vue3 | TypeScript &#x1f4da; &#x1f31f; 学习本无底&#xff0c;前进莫徬徨。&#x1f31f; 目录 一.字符串查找 1.length属性 2. i…

ffmpeg视频滤镜:替换部分帧-freezeframes

滤镜描述 freezeframes 官网地址 > FFmpeg Filters Documentation 这个滤镜接收两个输入&#xff0c;然后会将第一个视频中的部分帧替换为第二个视频的某一帧。 滤镜使用 参数 freezeframes AVOptions:first <int64> ..FV....... set first fra…

云计算-华为HCIA-学习笔记

笔者今年7月底考取了华为云计算方向的HCIE认证&#xff0c;回顾从IA到IE的学习和项目实战&#xff0c;想整合和分享自己的学习历程&#xff0c;欢迎志同道合的朋友们一起讨论&#xff01; 第三章&#xff1a;常见设备 交换机 二层交换机和三层交换机&#xff0c;所谓二层交换机…

问题记录-Java后端

问题记录 目录 问题记录1.多数据源使用事务注意事项&#xff1f;2.mybatis执行MySQL的存储过程&#xff1f;3.springBoot加载不到nacos配置中心的配置问题4.服务器产生大量close_wait情况 1.多数据源使用事务注意事项&#xff1f; 问题&#xff1a;在springBoot项目中多表处理数…

瑞派宠物医生 | 热爱与实践交织,专注宠物口腔健康

热爱与实践交织的兽医梦 瑞派上海乔登宠物医院院长陈德举自小便与赛鸽结下了不解之缘&#xff0c;家族中饲养赛鸽的传统不仅让他对鸟类产生了浓厚的兴趣&#xff0c;更在心中埋下了成为一名兽医的种子。在面临高考这一人生重要抉择时&#xff0c;他毫不犹豫地选择了兽医专业&am…

即时通讯服务器被ddos攻击了怎么办?

攻击即时通讯系统的主要手段 击键记录 目前盗取即时通讯工具帐号信息的最主要方法是通过特洛伊木马等恶意软件&#xff0c;例如QQ木马&#xff0c;这类程序能够盗取QQ密码信息&#xff0c;常见的能够盗取最新版本QQ密码的木马程序有十几种之多。几乎所有主要的QQ木马程序都采…

sklearn中常用数据集简介

scikit-learn库中提供了包括分类、回归、聚类、降维等多种机器学习任务所需的常用数据集&#xff0c;方便进行实验和研究&#xff0c;它们主要被封装在sklearn.datasets中&#xff0c;本文对其中一些常用的数据集进行简单的介绍。 1.Iris&#xff08;鸢尾花&#xff09;数据集…

【AIGC】如何准确引导ChatGPT,实现精细化GPTs指令生成

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: AIGC | 提示词Prompt应用实例 文章目录 &#x1f4af;前言&#x1f4af;准确引导ChatGPT创建爆款小红书文案GPTs指令案例&#x1f4af; 高效开发GPTs应用的核心原则明确应用场景和目标受众构建多样化风格模板提问与引…

json格式数据集转换成yolo的txt格式数据集

这个代码是参考了两个博客 我是感觉第一篇博客可能有问题&#xff0c;然后自己做了改进&#xff0c;如果我是错误的或者正确的&#xff0c;请各位评论区说一下&#xff0c;感谢 Json格式的数据集标签转化为有效的txt格式(data_coco)_train.json-CSDN博客 COCO&#xff08;.j…

Java面试之多线程并发篇

前言 本来想着给自己放松一下&#xff0c;刷刷博客&#xff0c;突然被几道面试题难倒&#xff01;说一说自己对于 synchronized 关键字的了解&#xff1f;说说自己是怎么使用 synchronized 关键字&#xff1f;什么是线程安全&#xff1f;Vector是一个线程安全类吗&#xff1f;…