MyBatis基础04之多对一

【计算机视觉】pyrealsense2:Intel RealSense 深度相机的 Python 接口实战指南 pyrealsense2:Intel RealSense 深度相机的 Python 接口实战 阅读详情

多对一

一个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();
C#粘包和分包问题及解决方法 一:通过图解法来描述一下分包和粘包,这样客户更清晰直观的了解:  下面对上面的图进行解释:  1.正常情况:如果Socket Client 发送的数据包,在Socket Server端也是一个一个完整接收的,那个就不会出现粘包和分包情况,数据正常读取。  2.粘包情况:Socket Client发送的数据包,在客户端发送和服务器接收的情况下都有可能发送,因为客户端发送的数据都是发送的一个缓冲... 阅读详情

相关推荐

5个IO口驱动188数码管:查理复用算法在TM52F1363上的极致应用

本文深入解析了如何利用查理复用算法,在TM52F1363单片机上仅用5个IO口驱动188数码管。通过精密的硬件连接与软件时序控制,结合高阻态和动态扫描策略,实现了在极致资源限制下的稳定显示,为成本敏感型嵌入式产品提供了高效的IO复用解决方案。

numpy6sculptor的博客 476

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

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

2302_79797878的博客 1185

深入解析MTK平台hang_detect机制:从原理到实战调试

本文深入解析了MTK平台hang_detect机制的工作原理与实战调试技巧。作为系统健康监测的核心机制,hang_detect通过多层级监控体系检测应用层和内核层异常,结合Kernel_exception等日志信息快速定位问题。文章详细介绍了典型问题案例、调试方法及预防措施,帮助开发者提升MTK平台系统稳定性调试能力。

purple的博客 1004

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

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

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

易智联LM401模块学习(四)——双串口收发

串口的发送和接受有三种方式,分别是阻塞发送和接收(轮询)、中断方式发送和接收、DMA方式发送和接收。这里我使用阻塞+中断的方式实现双串口通信。简单的串口收发。

weixin_46046597的博客 990

python代码实现了一个基于图注意力网络(GAT)和长短期记忆网络(LSTM)的股票成交量预测模型

自定义数据集类:定义了类,继承自。该类用于生成股票数据的时间序列样本,每个样本包含一个长度为seq_length的时间序列和对应的目标成交量。数据加载器:使用DataLoader对数据集进行批量加载,设置批量大小为 64,并开启数据打乱功能。GAT - LSTM 模型:定义了GAT_LSTM类,继承自。该模型结合了 GAT 和 LSTM 两种神经网络:GAT 部分:使用GATConv处理全局图特征,捕获股票之间的相互关系。LSTM 部分:使用nn.LSTM处理时间序列数据,捕捉时间序列的动态变化。

huanghm88的专栏 424

Mybatis中多对多CRUD的注意事项

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

weixin_43960336的博客 3076

无人机导航中的坐标系统详解与转换实现

本文系统介绍了无人机导航中常用的坐标系及其转换方法。主要内容包括:1) 四种关键坐标系(大地坐标系ECEF、经纬度LLA、北东天坐标系NED、机体坐标系)的定义和特点;2) 坐标系间的转换原理与实现,重点讲解LLA与ECEF的互转公式及ECEF与NED的转换方法;3) 提供可直接使用的C++实现代码,包括基于WGS84椭球模型的精确转换算法。这些内容为无人机导航系统开发提供了实用的坐标系处理方案,能够有效解决多源数据在不同坐标系下的统一表示问题。

电脑管家 375

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

使用注解的方式写SQL

晴空里的夏日雨 634

VSCode 中搭建 Python 开发环境

**验证安装**:打开终端(CMD/PowerShell/终端),输入 `python --version`(Windows)或 `python3 --version`(macOS/Linux),显示版本号即成功。- **下载地址**:[Python 官网](https://www.python.org/downloads/)(选择对应系统的最新稳定版,推荐 3.8+)- **调试**:通过 `launch.json` 配置,设置断点后按 `F5` 启动,使用 `F10/F11` 控制流程。

寒寒豆豆软件公司的博客 2534

基于AnimeGAN模型生成宫崎骏风格动漫照片

用于动画风格纹理和线条转换的灰度样式丢失;新颖的颜色重建损失,以保留内容图像的颜色;新的灰度对抗损失防止生成的图像从显示为灰度图像;使用深度可分卷积和反向残块的轻量级生成器,以实现更快的传输。实验表明,AnimeGAN可以对真实世界的照片进行变换场景动画风格的图像与高质量的动画视觉效果和显著优于最先进的风格化方法。# 生成宫崎骏风格图片 model = hub . Module('animegan_v1_hayao_60' , use_gpu = True)images:输入的图片数据。

优快云 精品推荐 3630

Mybatis关系篇

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

有幸添砖java 188

Winform从入门到精通(38)——StatusStrip(史上最全)

本文介绍StatusStrip控件的详细用法,包含所有属性和事件,绝对史上最全!

qq_34059233的博客 2758

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

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

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

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

韩超的博客 (hanchao5272) 6433

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

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

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

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、付费专栏及课程。

余额充值