MyBatis基础04之多对一

避开ns-3学习深坑:用sns3模块快速搭建GEO卫星通信仿真(附GitHub代码解读) 本文介绍了如何使用sns3模块快速搭建GEO卫星通信仿真环境,绕过复杂的ns-3底层细节。通过详细的Linux环境配置、sns3模块安装和示例代码解读,帮助开发者快速上手卫星通信仿真,并提供了常见问题的解决方案和性能优化技巧。 阅读详情

多对一

一个category对应多个product,这是一对多
同样多个product对应一个category这是多对一
区分两种最主要的是看主体是谁
在实体类中需要持有对方

  1. 修改Product.java
    ...
    private Category category;
    public Category getCategory(){
        return category;
        }
    public void setCategory(Category category) {
        this.category = category;
        }

    @override
    public String toString(){
        return "product [id="+id+",name="+name+  
        ",price="+price+"]";

2 . Product.xml

提供Product.xml,通过listProduct配置关联查询的sql语句。
然后通过resultMap ,进行字段和属性的对应。
使用association 进行多对一关系关联,指定表字段名称与对象属性名称的一一对应关系
注: Category的id 字段 和Product的id字段同名,Mybatis不知道谁是谁的,所以需要通过取别名cid,pid来区分。
name字段同理。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
    PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
    "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    <mapper namespace="com.how2java.pojo">
        <resultMap type="Product" id="productBean">
            <id column="pid" property="id" />
            <result column="pname" property="name" />
            <result column="price" property="price" />

            <!-- 多对一的关系 -->
            <!-- property: 指的是属性名称,
             javaType:指的是属性的类型 -->
            <association property="category"  
             javaType="Category">
                <id column="cid" property="id"/>
                <result column="cname" property="name"/>
            </association>
        </resultMap>

        <!-- 根据id查询Product, 关联将Orders查询出来 -->
        <select id="listProduct" resultMap="productBean">
            select c.*, p.*, c.id 'cid', p.id 'pid',  
             c.name 'cname', p.name 'pname' from category_ c  
              left join product_ p on c.id = p.cid
        </select>   
    </mapper>

在mybatis中添加product.xml的映射

    <mappers>
        <mapper resource="com/how2java/pojo/Category.xml"/>
        <mapper resource="com/how2java/pojo/Product.xml"/>
    </mappers>

3 . 测试TestMyBatis.java

    List<Product> ps = session.selectList("listProduct");
        for (Product p : ps) {
            System.out.println(p+" 对应的分类是 \t "+  
             p.getCategory());
        }
先修改数据库,再查询多对一关系

眼下的多对一关系是
product(id=5) 对应 category(id=2)
结合CRUD ,通过Mybatis,做到 product(id=5) 对应category(id=1)

先在product.xml中添加 “updateProduct”的update方法

     <update id = "updateProduct" parameterType="Product">
         /*为什么是category.id因为id这个字段重复,所以前面加限定,  
         而category是resultMap中设定的别名   
          <association property="category"   
                  javaType="Category">*/
         update product_ set name = #{name},  
          cid = #{category.id} where id = #{id};
     </update>

之后在TestMyBatis.java中

        Category c1 = session.selectOne("getCategory",1);

        Product p5 = session.selectOne("getProduct",5);

        p5.setCategory(c1);

        session.update("updateProduct",p5);
        session.commit();
        session.close();
Java 开发打飞机小游戏(附完整源码) 上图 写在前面 技术源于分享,所以今天抽空把自己之前用java做过的小游戏整理贴出来给大家参考学习。java确实不适合写桌面应用,这里只是通过这个游戏让大家理解oop面向对象编程的过程,纯属娱乐。代码写的很简单,也很容易理解,并且注释写的很清楚了,还有问题,自己私下去补课学习。 完整代码 敌飞机 import java.util.Random; 敌飞机: 是飞行物,也是敌人 public class Airplane extends FlyingObject implements Enemy { 阅读详情

相关推荐

高频面波成像实战:从频散曲线到全波形反演

面波勘探是近地表工程勘察的重要手段,其核心原理在于不同频率的面波对地下介质的敏感深度不同,由此形成的频散曲线能够反映浅层剪切波速结构。相较于传统钻探与折射波法,高频面波成像具有无损、高效、对低速夹层敏感等优势,广泛应用于路基检测、空洞探测、滑坡调查等领域。在实际工程中,从野外采集的排列设计、震源选型,到频散谱提取与频散曲线反演,每一步都直接影响成像精度。然而频散反演受限于一维层状假设,难以刻画横向剧烈变化的地质体。全波形反演通过拟合完整波形信息,能够突破频散曲线的分辨率边界,获得更精细的近地表速度模型。本文

weixin_29090917的博客 270

MyBatis 多表查询全攻略(一对多 / 多对一 / 多对多)

MyBatis 多表查询的核心是通过(单对象)和collection(集合)标签实现关联数据封装,关键要注意字段别名主键映射连接类型选择三大要点。掌握本文的设计逻辑、配置方法和避坑技巧,可轻松应对生产中绝大多数多表查询场景。

2302_79797878的博客 1185

在 NVIDIA Orin (JetPack 6.0) 上配置 PyTorch 2.4 + Torchvision 0.19 的完整避坑指南

本文提供在NVIDIA Jetson Orin设备上,基于JetPack 6.0系统配置PyTorch 2.4与Torchvision 0.19环境的完整指南。通过使用Miniconda环境隔离、安装特定版本PyTorch夜间构建版、编译匹配的Torchvision源码等步骤,解决版本不匹配、CUDA支持等常见问题,确保AI开发环境稳定可用。

weixin_29179311的博客 363

mybatis关联查询问题(一对多、多对一)

mybatis 提供了高级的关联查询功能,一对多,多对多,多对一

我的程序人生(亦山札记) 3万+

别再用图片水印了!5种你可能不知道的文本隐写术实战

本文介绍了5种高效的文本隐写术,帮助创作者在不影响内容可读性的情况下嵌入版权信息。从零宽度字符到同形字替换,再到标点符号变形和行尾空格编码,这些技术为数字内容提供了轻量级版权保护方案,特别适用于社交媒体和电子合同等场景。

k8l9m0n的博客 225

扬声器设计避坑指南:用Comsol分析反电动势对THD的影响(附案例文件)

本文深入探讨了扬声器设计中反电动势对总谐波失真的关键影响。通过COMSOL仿真,详细分析了BL值非线性、音圈电感变化等电磁-力-声耦合机制,并提供了从参数化建模到系统级优化的实战指南,帮助工程师精准量化并降低谐波失真,提升扬声器音质。

xx56789的博客 519

Mybatis中多对多CRUD的注意事项

在MySQL数据库中我们知道列与列之间如果是多对多的关系,系统会需要一张中间表来维护两个表之间的关系,我在这里使用员工employee和角色role来示例 先来一个员工表t_employee 再来一个角色表t_role 需要一个中间表来维护二者之间多对多的关系 启动IDEA 新建项目使用Mybatis框架开干 domain设计 由于Mybatis是手动来维护表与表之间的关系,这里多对多的...

weixin_43960336的博客 3076

【python】geopandas库安装出现各种问题?可以看看这篇文章

geopandas的安装方法

jgsecurity的博客 3886

Mybatis学习笔记--(三)使用注解

使用注解的方式写SQL

晴空里的夏日雨 634

uds协议之can总线程序升级

uds协议简介 如何利用uds协议升级 升级流程 uds服务类型介绍

fangye945a的博客 1万+

Keil uVision5 STM32 startup_stm32f10x_md_vl.s error A3906U Malformed via file target not created..

🏆 本文收录于《全栈Bug调优(实战版)》专栏,致力于分享我在项目实战过程中遇到的各类Bug及其原因,并提供切实有效的解决方案。无论你是初学者还是经验丰富的开发者,本文将为你指引出一条更高效的Bug修复之路,助你早日登顶,迈向财富自由的梦想🚀!同时,欢迎大家关注、收藏、订阅本专栏,更多精彩内容正在持续更新中。让我们一起进步,Up!Up!Up!    备注: 部分问题/难题源自互联网,经过精心筛选和整理,结合数位十多年大厂实战经验资深大佬经验总结所得,数条可行方案供所需之人参考。

**My Coding Family** 2773

Mybatis关系篇

Mybatis关系篇分类表不变化,新增加产品表(表结构)清空category_ 和 product_ 表,新增2条分类数据,id分别是1,2;新增6条产品数据,分别关联上述2条分类数据一对多(一个分类,多个产品) 分类表不变化,新增加产品表(表结构) use how2java; create table product_( id int NOT NULL AUTO_INCREMENT, name ...

有幸添砖java 188

【代码版本管理】SVN(Subversion)

认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长!本文先对SVN(Subversion)代码版本管理做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章提示:以下是本篇文章正文内容。

qq_35635374的博客 668

Mybatis学习04 多对一与一对多处理

数据库表结构 Students表 Class_table表 多对一处理的2种方法 按结果嵌套处理 实体类 Students.java public class Students { private String s_id; private String s_name; private String s_sex; ...

u012777599的博客 289

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

MyBatis代码实例系列-04:MyBatis多表映射实例(一对多、多对一和多对多)

超级通道:MyBatis代码实例系列-绪论 本章主要记录MyBatis中的多表映射:一对多、多对一和多对多,涉及到的知识点有: 1. resultMap:当数据库方法返回的是复合数据类型(如list等),通常使用resultMap而非resultType。 2. collection:在resultMap中用来配置集合类型的数据结构,用来实现表间一对多映射。 3. association:

韩超的博客 (hanchao5272) 6433

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

mybatis多对一嵌套查询-mybatis学习笔记04

mybatis多对一嵌套查询: 嵌套查询的特点就是:查询的时候发送多条sql语句; 1+n条sql语句:1条主sql,还有多条分别查询语句: 例: 一条主语句:多条分别查询语句: 新建domain类: 新建一个domainMapper接口: 写domainMapper.xml配置: &amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; ?&amp;gt; &

itboy 1393

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

MyBatis(04) -- 一对多和多对一处理

一对多和多对一处理

VirtualShell的博客 124

mybatis学习04-多对一和一对多查询-动态sql

mybatis 学习04 多对一 查询 实体类 //teacher @Data public class Teacher { private int id; private String name; } //student @Data public class Student { private int id; private String name; private Teacher teacher; //注意此处,需要查出一个对象 } StudentMap

xpc1998的博客 132

04 Mybatis 使用注解开发,以及处理一对多和多对一的联合表的方式

Mybatis 使用注解开发,以及处理一对多和多对一的联合表的方式8、使用注解开发8.1、面向接口编程8.2、使用接口开发10、多对一处理1、按照查询嵌套语句2、按照结果嵌套查询11、一对多处理1、按照结果嵌套查询2、按照查询嵌套小节 8、使用注解开发 8.1、面向接口编程 8.2、使用接口开发 1、 注解在接口上实现 @Select("select * from user") List<User> getUsers(); @Select("select *from user where

从头再来的博客 271

mybatis复习04高级查询 一对多,多对一的映射处理,collection和association标签的使用

mybatis中一对多,多对一的映射处理,collection和association标签的使用,分布查询级联查询。association:处理多对一的映射关系。association标签的结构:, property:需要处理多对一的映射关系的属性名, javaType:该属性的类型.collection:用来处理一对多的映射系,property:需要处理一对多的映射关系的属性名,ofType:表示该属性对应的集合中存储的数据的类型.

m0_63622279的博客 1919

mybatis04-mybatis缓存、分页插件、注解开发(一对一、多对一、多对多)

mybatis的缓存机制,分页插件,使用注解代替映射文件

weixin_53903929的博客 728

mybatis的基础应用04注解开发 一对多案例 (用户对账户)及多对一(账户对用户)

项目结构 需要的jar包 链接: https://pan.baidu.com/s/1VT8E0YGBViNM76i-fo-cyQ 提取码: qft5 数据库表sql DROP TABLE IF EXISTS `user`; CREATE TABLE `user` ( `id` int(11) NOT NULL auto_increment, `username` varchar(32) NOT NULL COMMENT '用户名称', `birthday` datetime defaul

qq_54413328的博客 201

Mybatis实现多对一与一对多的处理

Mybatis实现多对一与一对多的处理 多对一:多个对象对应一个对象 比如:一个班级有很多学生,可是这个班级只有一个语文老师。这里学生和老师的关系就是多对一。 一对多:一个对象同时对应多个对象 比如:一个语文老师有很多班级,每一个班级就有很多的学生。这里老师和学生的关系就是一对多。 Mybatis实现多对一,需要用到resultMap中的association(关联)属性 创建两张表,实现多对一 CREATE TABLE `teacher` ( `id` INT(10) NOT NULL,

Starry Sea 546

Mybatis 中一对多,以及多对一的案例详解

最近在整理笔记,就把mybaits 中一对多,以及多对一查询详细的捋一遍。 首先 准备sql 数据 user(用户表) account(账户表) 一个用户可以有多个账户,一个账户只属于一个用户; 建立maven 工程 导入相关依赖 ,mybatis,mysql,junit,log4j; 建立实体类User和Account; 编写Dao,以及映射文件和主配置文件,下面上代码 编写测试类 项...

房东的猫咪的博客 727

Mybatis多对一映射查询

Mybatis多对一映射查询 数据表多对一需要使用到association标签,在mapper.xml中定义好字段映射. 添加查询需要用到下面几个操作, 添加实体类 添加方法接口 在mapper.xml中定义sql语句 数据库表及数据 use wt; SET FOREIGN_KEY_CHECKS=0; -- ---------------------------- -- ...

robin912的专栏 243

Mybatis学习日记-day6-多对一和一对多

在之前的博客里,学习的数据库模型都是单一的,还是那句话,如果世界总是那么美好就好了!在数据库设计和关系型数据建模中,多对一(Many-to-One)和一对多(One-to-Many)是两种非常基础且常见的实体间关系,它们是数据库设计中非常基础且强大的概念,它们帮助我们在逻辑上组织和表示现实世界中的复杂关系。

2301_79789506的博客 1292
上一篇: MyBatis基础03之一对多关系
下一篇: MyBatis基础05之多对多关系
Young-zhou
博客等级 码龄10年 10粉丝 49原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值