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;作为第六届国际科技创新学术交流大会分…

【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创刊号上给出的定义…

《基于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…

【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…

Ajax学习笔记,第一节:语法基础

Ajax学习笔记&#xff0c;第一节&#xff1a;语法基础 一、概念 1、什么是Ajax 使用浏览器的 XMLHttpRequest 对象 与服务器通信2、什么是axios Axios是一个基于Promise的JavaScript库&#xff0c;支持在浏览器和Node.js环境中使用。相较于Ajax&#xff0c;Axios提供了更多…

【ONE·基础算法 || 动态规划(二)】

总言 主要内容&#xff1a;编程题举例&#xff0c;熟悉理解动态规划类题型&#xff08;子数组、子序列问题&#xff09;。                文章目录 总言5、子数组问题&#xff08;数组中连续的一段&#xff09;5.1、最大子数组和&#xff08;medium&#xff09;5.1.…

数据库相关学习杂记-事务

ARIES&#xff08;基于语义的恢复与隔离算法&#xff09;是现代数据库理论的基础。提供了解决ACID中A、I、D重要的解决思路。 基础知识 这里先复习一下关于ACID的含义以及数据库隔离级别&#xff1a; ACID的含义 原子性&#xff08;Atomicity&#xff09;: 一个事务中被视为…

2024 java大厂面试复习总结(一)(持续更新)

10年java程序员&#xff0c;2024年正好35岁&#xff0c;2024年11月公司裁员&#xff0c;记录自己找工作时候复习的一些要点。 java基础 hashCode()与equals()的相关规定 如果两个对象相等&#xff0c;则hashcode一定也是相同的两个对象相等&#xff0c;对两个对象分别调用eq…

Python绘制太极八卦

文章目录 系列目录写在前面技术需求1. 图形绘制库的支持2. 图形绘制功能3. 参数化设计4. 绘制控制5. 数据处理6. 用户界面 完整代码代码分析1. rset() 函数2. offset() 函数3. taiji() 函数4. bagua() 函数5. 绘制过程6. 技术亮点 写在后面 系列目录 序号直达链接爱心系列1Pyth…

mfc100u.dll是什么?分享几种mfc100u.dll丢失的解决方法

mfc100u.dll 是一个动态链接库&#xff08;DLL&#xff09;文件&#xff0c;属于 Microsoft Foundation Classes (MFC) 库的一部分。MFC 是微软公司开发的一套用于快速开发 Windows 应用程序的 C 类库。mfc100u.dll 文件包含了 MFC 库中一些常用的函数和类的定义&#xff0c;这…

【JavaEE】Servlet:表白墙

文章目录 一、前端二、前置知识三、代码1、后端2、前端3、总结 四、存入数据库1、引入 mysql 的依赖&#xff0c;mysql 驱动包2、创建数据库数据表3、调整上述后端代码3.1 封装数据库操作&#xff0c;和数据库建立连接3.2 调整后端代码 一、前端 <!DOCTYPE html> <ht…