首页/新闻资讯/正文详情

MyBatis关联映射(一对多查询)

发布时间:2026/9/27 21:35:19 来源:云帆数科 栏目:资讯中心
MyBatis关联映射(一对多查询)
引“一个用户可以有多个订单多个订单也可以归一个用户所有。”本文主要实现《Java EE企业级应用开发教程SpringSpringMVCMybatis》第2版中第4章中的MyBatis一对一查询。本文使用工具IDEA2024、jdk1.8、maven3.6.3jdk1.8下载地址jdk1.8.0_131.zip链接:1百度网盘:通过网盘分享的文件jdk1.8.0_131.zip链接: https://pan.baidu.com/s/1KfrWgmzk720RHxlMcySPow?pwd49dt 提取码: 49dt(2) 夸克网盘我用夸克网盘给你分享了「jdk_8.0.1310.11.zip」点击链接或复制整段内容打开「夸克APP」即可获取。/82383b6hcL链接https://pan.quark.cn/s/25b5829aba22?pwdqwK9提取码qwK9Maven3.6.3下载地址链接:1百度网盘通过网盘分享的文件apache-maven-3.6.3.zip链接: https://pan.baidu.com/s/1hDekReMQF-CdbO6SSBpPaQ?pwdke73 提取码: ke732夸克网盘我用夸克网盘给你分享了「apache-maven-3.6.3.zip」点击链接或复制整段内容打开「夸克APP」即可获取。/fd6c3b6gww链接https://pan.quark.cn/s/1f109c6b6581?pwdRq2P提取码Rq2PWin10如何配置Java JDK环境请点击这里。Win10如何配置Maven环境请点击这里。IDEA如何配置JDK,请点击这里。IDEA如何配置Maven请点击这里。可能遇到的报错java.io.IOException: Could not find resource mybatis-config.xmlIDEA 连接数据库报错Public Key Retrieval is not allowed本文源代码下载地址1百度网盘通过网盘分享的文件ch04Mybatis关联映射.zip链接: https://pan.baidu.com/s/1dCjdWJaEDa0LIN_M0H2bew?pwd8p36 提取码: 8p362夸克网盘我用夸克网盘给你分享了「ch04Mybatis关联映射.zip」点击链接或复制整段内容打开「夸克APP」即可获取。/33a13b6hTX链接https://pan.quark.cn/s/99b916923d33?pwdsfjN提取码sfjN0.数据库创建我们按照下面的方式创建数据库和数据表-- 创建数据库CREATEDATABASEIFNOTEXISTSmybatis;-- 使用数据库USEmybatis;-- 创建tb_user表CREATETABLEIFNOTEXISTStb_user(idINT(32)PRIMARYKEYAUTO_INCREMENT,usernamevarchar(256),addressvarchar(256));-- 插入数据INSERTINTOtb_userVALUES(1,小明,北京);INSERTINTOtb_userVALUES(2,李华,上海);INSERTINTOtb_userVALUES(3,李刚,上海);-- 创建tb_orders表CREATETABLEIFNOTEXISTStb_orders(idINT(32)PRIMARYKEYAUTO_INCREMENT,numbervarchar(32)NOTNULL,user_idint(32)NOTNULL,FOREIGNKEY(user_id)REFERENCEStb_user(id));-- 插入数据INSERTINTOtb_ordersVALUES(1,1001,1);INSERTINTOtb_ordersVALUES(2,1002,2);INSERTINTOtb_ordersVALUES(3,1003,3);1.项目创建项目创建过程可以参考这篇文章IDEA 2024版本创建maven项目的方式有哪些?这里选择使用maven的方式创建打开IDEA点击“文件—新建—项目”这里使用生成器生成maven项目maven配置正确才能正常构建jdk版本选的1.8Archtype选择的是webapp点击“创建”等待一段时间后项目构建完毕。maven构建完项目后如下出现上面的SUCCESS空白的maven项目就创建完毕了。下面开始引入依赖文件。我们打开项目的pom.xml参考下面的代码引入mybatis和mysql等依赖projectxmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsdmodelVersion4.0.0/modelVersiongroupIdcom.guo/groupIdartifactIdch04/artifactIdpackagingwar/packagingversion1.0-SNAPSHOT/versionnamech04 Maven Webapp/nameurlhttp://maven.apache.org/urldependenciesdependencygroupIdorg.mybatis/groupIdartifactIdmybatis/artifactIdversion3.5.2/version/dependencydependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdversion8.0.11/version/dependencydependencygroupIdjunit/groupIdartifactIdjunit/artifactIdversion4.12/versionscopetest/scope/dependency/dependenciesbuildfinalNamech04/finalName/build/project点击刷新依赖maven就可以下载依赖了。2.创建实体类先要创建相关的文件夹这里创建java文件夹也就是Maven源目录。这个文件夹创建后是蓝色的。java这个文件夹如果不是蓝色的可以右击这个文件夹选择“将目录标记为”—”源代码目录”然后创建实体类的文件夹com.itheima.pojo右击java选择“新建”然后点击“软件包”软件包的名字是 com.itheima.pojo然后回车创建然后创建实体类,右击pojo文件夹选择“新建”—”Java类”类名是 Orders选择是“类”参考代码如下packagecom.itheima.pojo;publicclassOrders{privateIntegerid;//订单idprivateStringnumber;//订单编号publicIntegergetId(){returnid;}publicvoidsetId(Integerid){this.idid;}publicStringgetNumber(){returnnumber;}publicvoidsetNumber(Stringnumber){this.numbernumber;}OverridepublicStringtoString(){returnOrders{idid, numbernumber\};}}生成后项目代码如下再按照同样方式生成一个类类名是Users类名是User参考代码如下packagecom.itheima.pojo;importjava.util.List;publicclassUsers{privateIntegerid;//用户idprivateStringusername;//用户姓名privateStringaddress;//用户地址privateListOrdersordersList;//用户关联订单publicIntegergetId(){returnid;}publicvoidsetId(Integerid){this.idid;}publicStringgetUsername(){returnusername;}publicvoidsetUsername(Stringusername){this.usernameusername;}publicStringgetAddress(){returnaddress;}publicvoidsetAddress(Stringaddress){this.addressaddress;}publicListOrdersgetOrdersList(){returnordersList;}publicvoidsetOrdersList(ListOrdersordersList){this.ordersListordersList;}OverridepublicStringtoString(){returnUsers{idid, usernameusername\, addressaddress\, ordersListordersList};}}创建完后项目如下所示3.创建映射文件选择“resources”文件夹右击选择“新建”—”目录”创建com.itheima.mapper文件夹如果出现上面的提示可以把文件的名字改为com/itheima/mapper按回车后生成相关文件夹然后右击mapper文件夹选择“新建”—”文件”文件名称为 “UsersMapper.xml”要创建的代码参考如下?xml version1.0 encodingUTF-8?!DOCTYPEmapperPUBLIC-//mybatis.org//DTD mapper 3.0//ENhttp://mybatis.org/dtd/mybatis-3-mapper.dtdmappernamespacecom.itheima.mapper.UsersMapperselectidfindUserWithOrdersparameterTypeIntegerresultMapUserWithOrdersResultSELECT u.*,o.id as orders_id,o.number from tb_user u,tb_orders o WHERE u.id o.user_id AND u.id #{id}/select!-- 一对多关联映射collection,ofType表示属性集合中的元素类型ListOrders属性即Orders类 --resultMaptypecom.itheima.pojo.UsersidUserWithOrdersResultidpropertyidcolumnid/resultpropertyusernamecolumnusername/resultpropertyaddresscolumnaddress/collectionpropertyordersListofTypecom.itheima.pojo.Ordersidpropertyidcolumnorders_id/resultpropertynumbercolumnnumber//collection/resultMap/mapper创建后项目如下4.创建数据库配置文件db.properties右击“resources”文件夹选择“新建”——”文件”文件名称为db.properties参考代码如下mysql.drivercom.mysql.cj.jdbc.Driver mysql.urljdbc:mysql://localhost:3306/mybatis?serverTimezoneUTCcharacterEncodingutf8useUnicodetrueuseSSLfalse mysql.usernameroot mysql.password123456注意此处要修改为你自己的数据库的用户名和密码。5.创建mybatis配置文件mybatis-config.xml右击“resources”文件夹选择“新建”——”文件”文件名称为 mybatis-config.xml参考代码如下?xml version1.0 encodingUTF-8 ?!DOCTYPEconfigurationPUBLIC-//mybatis.org//DTD Config 3.0//ENhttp://mybatis.org/dtd/mybatis-3-config.dtdconfiguration!-- 环境配置 --!-- 加载类路径下的属性文件 --propertiesresourcedb.properties/typeAliasespackagenamecom.itheima.pojo//typeAliasesenvironmentsdefaultdevelopmentenvironmentiddevelopmenttransactionManagertypeJDBC/!-- 数据库连接相关配置 ,db.properties文件中的内容--dataSourcetypePOOLEDpropertynamedrivervalue${mysql.driver}/propertynameurlvalue${mysql.url}/propertynameusernamevalue${mysql.username}/propertynamepasswordvalue${mysql.password}//dataSource/environment/environments!-- 配置Mapper文件 --mappersmapperresourcecom/itheima/mapper/UserMapper.xml//mappers/configuration创建完后项目结构如下6.创建测试类右击src文件夹选择“新建”—”目录”这里文件夹是 test/java注意颜色测试文件夹是绿色如果不是绿色需要手动标记成测试源。右击绿色的java文件夹选择“新建”—”Java类”类名为 MyBatisTest参考代码如下importcom.itheima.pojo.Users;importorg.apache.ibatis.io.Resources;importorg.apache.ibatis.session.SqlSession;importorg.apache.ibatis.session.SqlSessionFactory;importorg.apache.ibatis.session.SqlSessionFactoryBuilder;importorg.junit.Test;importjava.io.IOException;importjava.io.Reader;publicclassMyBatisTest{TestpublicvoidfindUserWithOrdersTest(){//读取文件名Stringresourcesmybatis-config.xml;//创建流Readerreadernull;try{//读取mybatis-config.xml文件内容到reader对象中readerResources.getResourceAsReader(resources);}catch(IOExceptione){e.printStackTrace();}//初始化mybatis数据库,创建SqlSessionFactory类的实例SqlSessionFactorysqlMappernewSqlSessionFactoryBuilder().build(reader);//创建SqlSession实例SqlSessionsessionsqlMapper.openSession();//传入参数查询返回结果Usersuserssession.selectOne(com.itheima.mapper.UsersMapper.findUserWithOrders,1);System.out.println(users);//关闭sessionsession.close();}}添加完后项目结构如下测试效果如下

相关推荐

WeChatMsg 完整指南:免费把微信聊天记录导出成 Word/HTML/CSV(4 步上手 + 年度聊天报告)
WeChatMsg 完整指南:免费把微信聊天记录导出成 Word/HTML/CSV(4 步上手 + 年度聊天报告)

WeChatMsg 完整指南:免费把微信聊天记录导出成 Word/HTML/CSV(4 步上手 年度聊天报告) 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项… · 2026/9/27 21:35:19

NodeMCU Firmware 的 bit 模块详解:在 ESP8266 Lua 中实现 32 位整数位操作
NodeMCU Firmware 的 bit 模块详解:在 ESP8266 Lua 中实现 32 位整数位操作

物联网嵌入式 【免费下载链接】nodemcu-firmware Lua based interactive firmware for ESP8266, ESP8285 and ESP32 项目地址: https://gitcode.com/gh_mirrors/no/nodemcu-firmware 点击查看 免费下载 NodeMCU Firmware 内置的 bit 模块为 Lua 开发者提供了完整的… · 2026/9/27 21:35:19

翻墙到国外网站怎么做?不懂代码也能搞,报价明细看这里
翻墙到国外网站怎么做?不懂代码也能搞,报价明细看这里

翻墙到国外网站怎么做?不懂代码也能搞,报价明细看这里 想建个能访问境外资源的网站,自己完全不会代码,心里最慌的就是 多少钱 能落地。别被那些“一口价全包”的中介忽悠,今天把底裤都扒给你看。 做这类站点,核心不是“墙”本身,而是… · 2026/9/27 21:35:19

如何制作一个网页网站:被黑挂马后,我花了3万重做
如何制作一个网页网站:被黑挂马后,我花了3万重做

如何制作一个网页网站:被黑挂马后,我花了3万重做 网站被黑挂马不知道怎么办?这是上周深夜我接到客户电话时,听到的第一句话。他的电商首页突然弹出一堆博彩广告,浏览器提示不安全,后台登录也进不去了。他问我:“这种烂摊子,彻底修好大概要多少钱?”… · 2026/9/27 22:02:30

Naise AI 核心应用场景与落地实践指南
Naise AI 核心应用场景与落地实践指南

在日常开发和产品落地过程中,我们常常面临一个核心痛点:如何让人工智能真正融入业务流,而不是仅仅作为一个聊天玩具存在?很多团队引入了大模型,却只停留在“问一个问题得到一个回答”的浅层交互上,实际的生… · 2026/9/27 22:02:30

8种常见代码编译软件配 TaoToken:从 VS Code 到 Vim 的统一 Key 配置骨架
8种常见代码编译软件配 TaoToken:从 VS Code 到 Vim 的统一 Key 配置骨架

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 22:02:30

DLMS/COSEM 蓝皮书解读(六):Register activation 类(class_id = 6)—— 费率切换的“总开关“
DLMS/COSEM 蓝皮书解读(六):Register activation 类(class_id = 6)—— 费率切换的“总开关“

DLMS/COSEM 蓝皮书解读(六):Register activation 类(class_id 6)—— 费率切换的"总开关"系列说明:本系列基于 DLMS UA《Blue Book(蓝皮书)第 16 版 第 2 部分》&#x… · 2026/9/27 22:02:30

客户问“你们接大模型了吗”,我该怎么答:TaoToken 统一 Key 接入 AI 工具配置指南
客户问“你们接大模型了吗”,我该怎么答:TaoToken 统一 Key 接入 AI 工具配置指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 22:02:23

网站备案核验单怎么选避坑指南图解步骤详解
网站备案核验单怎么选避坑指南图解步骤详解

网站备案核验单怎么选避坑指南图解步骤详解 找建站公司最怕什么?怕被坑高价,怕最后交付的东西连个正经备案都下不来。很多老板以为花钱买个网站就完事了,结果卡在“网站备案核验单”这一步,因为不懂行,被销售忽悠着填错信息、选错服务,导致备案被驳回甚… · 2026/9/27 22:02:23

MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现

简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01

汕头网站建设制作厂家避坑指南:5大注意事项救急
汕头网站建设制作厂家避坑指南:5大注意事项救急

汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01

多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习

简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01

MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现

简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01

汕头网站建设制作厂家避坑指南:5大注意事项救急
汕头网站建设制作厂家避坑指南:5大注意事项救急

汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01

多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习

简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码