☰
MyBatis关联映射(一对多查询)
2026/9/27 21:35:15 网站建设 项目流程

引:

“一个用户可以有多个订单,多个订单也可以归一个用户所有。”

本文主要实现《Java EE企业级应用开发教程(Spring+SpringMVC+Mybatis)》第2版中第4章中的MyBatis一对一查询。

本文使用工具:IDEA2024、jdk1.8、maven3.6.3

jdk1.8下载地址:

jdk1.8.0_131.zip链接:
(1)百度网盘:
通过网盘分享的文件:jdk1.8.0_131.zip
链接: https://pan.baidu.com/s/1KfrWgmzk720RHxlMcySPow?pwd=49dt 提取码: 49dt

(2) 夸克网盘
我用夸克网盘给你分享了「jdk_8.0.1310.11.zip」,点击链接或复制整段内容,打开「夸克APP」即可获取。
/82383b6hcL😕
链接:https://pan.quark.cn/s/25b5829aba22?pwd=qwK9
提取码:qwK9

Maven3.6.3下载地址链接:
(1)百度网盘
通过网盘分享的文件:apache-maven-3.6.3.zip
链接: https://pan.baidu.com/s/1hDekReMQF-CdbO6SSBpPaQ?pwd=ke73 提取码: ke73

(2)夸克网盘
我用夸克网盘给你分享了「apache-maven-3.6.3.zip」,点击链接或复制整段内容,打开「夸克APP」即可获取。
/fd6c3b6gww😕
链接:https://pan.quark.cn/s/1f109c6b6581?pwd=Rq2P
提取码:Rq2P

Win10如何配置Java JDK环境,请点击这里。

Win10如何配置Maven环境,请点击这里。

IDEA如何配置JDK,请点击这里。

IDEA如何配置Maven,请点击这里。

可能遇到的报错:

java.io.IOException: Could not find resource mybatis-config.xml

IDEA 连接数据库报错Public Key Retrieval is not allowed

本文源代码下载地址:
(1)百度网盘
通过网盘分享的文件:ch04(Mybatis关联映射).zip
链接: https://pan.baidu.com/s/1dCjdWJaEDa0LIN_M0H2bew?pwd=8p36 提取码: 8p36

(2)夸克网盘
我用夸克网盘给你分享了「ch04(Mybatis关联映射).zip」,点击链接或复制整段内容,打开「夸克APP」即可获取。
/33a13b6hTX😕
链接:https://pan.quark.cn/s/99b916923d33?pwd=sfjN
提取码:sfjN

0.数据库创建

我们按照下面的方式创建数据库和数据表

-- 创建数据库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.8

Archtype选择的是webapp,点击“创建”,等待一段时间后,项目构建完毕。

maven构建完项目后如下


出现上面的SUCCESS,空白的maven项目就创建完毕了。

下面开始引入依赖文件。

我们打开项目的pom.xml

参考下面的代码引入mybatis和mysql等依赖

<projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.guo</groupId><artifactId>ch04</artifactId><packaging>war</packaging><version>1.0-SNAPSHOT</version><name>ch04 Maven Webapp</name><url>http://maven.apache.org</url><dependencies><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.2</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.11</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency></dependencies><build><finalName>ch04</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.id=id;}publicStringgetNumber(){returnnumber;}publicvoidsetNumber(Stringnumber){this.number=number;}@OverridepublicStringtoString(){return"Orders{"+"id="+id+", number='"+number+'\''+'}';}}

生成后项目代码如下:


再按照同样方式生成一个类,类名是Users


类名是User


参考代码如下:

packagecom.itheima.pojo;importjava.util.List;publicclassUsers{privateIntegerid;//用户idprivateStringusername;//用户姓名privateStringaddress;//用户地址privateList<Orders>ordersList;//用户关联订单publicIntegergetId(){returnid;}publicvoidsetId(Integerid){this.id=id;}publicStringgetUsername(){returnusername;}publicvoidsetUsername(Stringusername){this.username=username;}publicStringgetAddress(){returnaddress;}publicvoidsetAddress(Stringaddress){this.address=address;}publicList<Orders>getOrdersList(){returnordersList;}publicvoidsetOrdersList(List<Orders>ordersList){this.ordersList=ordersList;}@OverridepublicStringtoString(){return"Users{"+"id="+id+", username='"+username+'\''+", address='"+address+'\''+", ordersList="+ordersList+'}';}}

创建完后,项目如下所示

3.创建映射文件

选择“resources”文件夹,右击,选择“新建”—>”目录”


创建com.itheima.mapper文件夹


如果出现上面的提示,可以把文件的名字改为com/itheima/mapper

按回车后生成相关文件夹

然后,右击mapper文件夹,选择“新建”—>”文件”


文件名称为 “UsersMapper.xml”


要创建的代码参考如下

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPEmapperPUBLIC"-//mybatis.org//DTD mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mappernamespace="com.itheima.mapper.UsersMapper"><selectid="findUserWithOrders"parameterType="Integer"resultMap="UserWithOrdersResult">SELECT 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表示属性集合中的元素类型,List<Orders>属性即Orders类 --><resultMaptype="com.itheima.pojo.Users"id="UserWithOrdersResult"><idproperty="id"column="id"/><resultproperty="username"column="username"/><resultproperty="address"column="address"/><collectionproperty="ordersList"ofType="com.itheima.pojo.Orders"><idproperty="id"column="orders_id"/><resultproperty="number"column="number"/></collection></resultMap></mapper>

创建后项目如下:

4.创建数据库配置文件db.properties

右击“resources”文件夹,选择“新建”——>”文件”

文件名称为db.properties


参考代码如下:

mysql.driver=com.mysql.cj.jdbc.Driver mysql.url=jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC&characterEncoding=utf8&useUnicode=true&useSSL=false mysql.username=root mysql.password=123456

注意,此处要修改为你自己的数据库的用户名和密码。

5.创建mybatis配置文件mybatis-config.xml

右击“resources”文件夹,选择“新建”——>”文件”


文件名称为 mybatis-config.xml


参考代码如下:

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPEconfigurationPUBLIC"-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration><!-- 环境配置 --><!-- 加载类路径下的属性文件 --><propertiesresource="db.properties"/><typeAliases><packagename="com.itheima.pojo"/></typeAliases><environmentsdefault="development"><environmentid="development"><transactionManagertype="JDBC"/><!-- 数据库连接相关配置 ,db.properties文件中的内容--><dataSourcetype="POOLED"><propertyname="driver"value="${mysql.driver}"/><propertyname="url"value="${mysql.url}"/><propertyname="username"value="${mysql.username}"/><propertyname="password"value="${mysql.password}"/></dataSource></environment></environments><!-- 配置Mapper文件 --><mappers><mapperresource="com/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(){//读取文件名Stringresources="mybatis-config.xml";//创建流Readerreader=null;try{//读取mybatis-config.xml文件内容到reader对象中reader=Resources.getResourceAsReader(resources);}catch(IOExceptione){e.printStackTrace();}//初始化mybatis数据库,创建SqlSessionFactory类的实例SqlSessionFactorysqlMapper=newSqlSessionFactoryBuilder().build(reader);//创建SqlSession实例SqlSessionsession=sqlMapper.openSession();//传入参数查询,返回结果Usersusers=session.selectOne("com.itheima.mapper.UsersMapper.findUserWithOrders",1);System.out.println(users);//关闭sessionsession.close();}}

添加完后项目结构如下:


测试效果如下:

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询