ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

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

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本文下载源代码在文章末尾。0.数据库创建我们按照下面的方式创建数据库和数据表-- 创建数据库CREATEDATABASEIFNOTEXISTSmybatis;-- 使用数据库USEmybatis;-- 创建tb_idcard表CREATETABLEIFNOTEXISTStb_idcard(idINTPRIMARYKEYAUTO_INCREMENT,codeVARCHAR(20)NOTNULL);-- 插入数据INSERTINTOtb_idcard(code)VALUES(11111111);INSERTINTOtb_idcard(code)VALUES(22222222);-- 创建tb_personCREATETABLEIFNOTEXISTStb_person(idINTPRIMARYKEYAUTO_INCREMENT,nameVARCHAR(32),ageINT,sexCHAR(8),card_idINTUNIQUE,FOREIGNKEY(card_id)REFERENCEStb_idcard(id));-- 插入两条数据INSERTINTOtb_person(name,age,sex,card_id)VALUES(Rose,22,女,1);INSERTINTOtb_person(name,age,sex,card_id)VALUES(jack,23,男,2);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/project2.创建实体类先要创建相关的文件夹这里创建java文件夹也就是Maven源目录。这个文件夹创建后是蓝色的。java这个文件夹如果不是蓝色的可以右击这个文件夹选择“将目录标记为”—”源代码目录”然后创建实体类的文件夹com.itheima.pojo右击java选择“新建”然后点击“软件包”软件包的名字是 com.itheima.pojo然后回车创建然后创建实体类,右击pojo文件夹选择“新建”—”Java类”类名是 IdCard选择是“类”代码参考下面packagecom.itheima.pojo;publicclassIdCard{privateIntegerid;//身份证idprivateStringcode;//身份证号码publicIntegergetId(){returnid;}publicvoidsetId(Integerid){this.idid;}publicStringgetCode(){returncode;}publicvoidsetCode(Stringcode){this.codecode;}OverridepublicStringtoString(){returnIdCard{idid, codecode\};}}生成后整个项目如下再按照同样方式生成一个类类名是Person类名是Person参考代码如下package com.itheima.pojo;publicclassPerson{privateIntegerid;//人员idprivateStringname;//人员姓名privateIntegerage;//人员年龄privateStringsex;//人员性别privateIdCardcard;//人员关联的证件publicIntegergetId(){returnid;}publicvoidsetId(Integerid){this.idid;}publicStringgetName(){returnname;}publicvoidsetName(Stringname){this.namename;}publicIntegergetAge(){returnage;}publicvoidsetAge(Integerage){this.ageage;}publicStringgetSex(){returnsex;}publicvoidsetSex(Stringsex){this.sexsex;}publicIdCardgetCard(){returncard;}publicvoidsetCard(IdCardcard){this.cardcard;}OverridepublicStringtoString(){returnPerson{idid, namename\, ageage, sexsex\, cardcard};}}创建完后项目如下所示3.创建映射文件选择“resources”文件夹右击选择“新建”—”目录”创建com.itheima.mapper文件夹如果出现上面的提示可以把文件的名字改为com/itheima/mapper按回车后生成相关文件夹然后右击mapper文件夹选择“新建”—”文件”文件名称为 “IdCardMapper.xml”要创建的代码参考如下?xml version1.0 encodingUTF-8?!DOCTYPEmapperPUBLIC-//mybatis.org//DTD mapper 3.0//ENhttp://mybatis.org/dtd/mybatis-3-mapper.dtdmappernamespacecom.itheima.mapper.IdCardMapper!-- 根据id查询证件信息 --selectidfindCodeByIdCardparameterTypeIntegerresultTypecom.itheima.pojo.IdCardselect * from tb_idcard where id #{id}/select/mapper创建后项目如下。注意此处idfindcodeByIdCard爆红是对的因为还没有做关联。然后创建第二个文件PersonMapper.xml文件名称是PersonMapper.xml文件里面的参考代码如下?xml version1.0 encodingUTF-8?!DOCTYPEmapperPUBLIC-//mybatis.org//DTD mapper 3.0//ENhttp://mybatis.org/dtd/mybatis-3-mapper.dtdmappernamespacecom.itheima.mapper.PersonMapper!-- 嵌套查询通过执行另外一条SQL映射语句来返回预期的特殊类型 --selectidfindPersonByIdparameterTypeIntegerresultMapIdCardWithPersonResultselect * from tb_person where id #{id}/selectresultMaptypecom.itheima.pojo.PersonidIdCardWithPersonResultidpropertyidcolumnid/resultpropertynamecolumnname/resultpropertyagecolumnage/resultpropertysexcolumnsex/!--一对一 association使用select属性引入另一条SQL语句 --associationpropertycardcolumncard_idjavaTypecom.itheima.pojo.IdCardselectcom.itheima.mapper.IdCardMapper.findCodeByIdCard//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参考代码如下?xmlversion1.0encodingUTF-8?!DOCTYPE configuration PUBLIC-//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/PersonMapper.xml/mapperresourcecom/itheima/mapper/IdCardMapper.xml//mappers/configuration创建完后项目结构如下6.创建测试类右击src文件夹选择“新建”—”目录”这里文件夹是 test/java注意颜色测试文件夹是绿色如果不是绿色需要手动标记成测试源。右击绿色的java文件夹选择“新建”—”Java类”类名为 MyBatisTest参考代码如下importcom.itheima.pojo.Person;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{TestpublicvoidfindPersonByIdTest(){//读取文件名Stringresourcesmybatis-config.xml;//创建流Readerreadernull;try{//读取mybatis-config.xml文件内容到reader对象中readerResources.getResourceAsReader(resources);}catch(IOExceptione){e.printStackTrace();}//初始化mybatis数据库,创建SqlSessionFactory类的实例SqlSessionFactorysqlMappernewSqlSessionFactoryBuilder().build(reader);//创建SqlSession实例SqlSessionsessionsqlMapper.openSession();//传入参数查询返回结果Personpersonsession.selectOne(com.itheima.mapper.PersonMapper.findPersonById,1);System.out.println(person);//关闭sessionsession.close();}}添加完后项目结构如下测试效果如下本文源代码下载1百度网盘通过网盘分享的文件ch04Mybatis关联映射.zip链接: https://pan.baidu.com/s/1F0WjXb21zwVonDbcTu9dyw?pwdj6u9 提取码: j6u92夸克网盘我用夸克网盘给你分享了「ch04Mybatis关联映射.zip」点击链接或复制整段内容打开「夸克APP」即可获取。/16e83b6hWY链接https://pan.quark.cn/s/808523980172?pwdCR8R提取码CR8R
返回列表