根据省会的id查询出省会和对应国家的信息

01.多表的连接查询

修改对应的实体类信息

/***国家的实体类*/
public class Country {private  Integer cId;    //国家的编号private  String cName;   //国家的名称public Integer getcId() {return cId;}public void setcId(Integer cId) {this.cId = cId;}public String getcName() {return cName;}public void setcName(String cName) {this.cName = cName;}public Country(Integer cId, String cName) {super();this.cId = cId;this.cName = cName;}public Country() {super();}@Overridepublic String toString() {return "Country [cId=" + cId + ", cName=" + cName ;}}

/*** *省会对应的实体类*/
public class Provincial {private Integer pId;    //省会的编号private String pName;  //省会名称//关联的国家属性private  Country country;public Country getCountry() {return country;}public void setCountry(Country country) {this.country = country;}public Integer getpId() {return pId;}public void setpId(Integer pId) {this.pId = pId;}public String getpName() {return pName;}public void setpName(String pName) {this.pName = pName;}public Provincial(Integer pId, String pName) {super();this.pId = pId;this.pName = pName;}public Provincial() {super();}@Overridepublic String toString() {return "Provincial [pId=" + pId + ", pName=" + pName + ", country="+ country + "]";}}

修改对应的dao和mapper

public interface ProvincialDao {/*** 根据省会的id查询出省会和对应国家的信息  */Provincial selectProvincialById(Integer pId);
}

<?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="cn.bdqn.dao.ProvincialDao"><!-- 这里的resultMap和之前使用的不一样,哪怕属性和字段一致 也要书写因为mybatis在底层封装的时候,是根据我们resultMap中写的属性来的 --><resultMap type="Provincial" id="provincialMap"><id property="pId" column="pid"/><result property="pName" column="pname"/><!--  设置关联的属性 --><association property="country" javaType="Country"><id property="cId" column="cid"/><result property="cName" column="cname"/></association></resultMap><!-- 这是单表的关联查询   不经常使用  因为 不能使用延迟加载 --><select id="selectProvincialById" resultMap="provincialMap">select  cid,cname,pid,pname from country,provincialwhere cid=countryid and pid=#{xxx}   <!--  #{xxx} 参数的占位符  --></select>  </mapper>

mybatis.xml文件管理mapper文件

    <!-- 加载映射文件信息 --><mappers><mapper resource="cn/bdqn/dao/ProvincialMapper.xml" /></mappers>

测试类代码

public class ProvincialTest {ProvincialDao dao;SqlSession session;@Beforepublic void before() {// 因为需要关闭session 需要把session提取出去session = SessionUtil.getSession();dao = session.getMapper(ProvincialDao.class);}@Afterpublic void after() {if (session != null) {session.close();}}/*** 根据省会的id查询出省会和对应国家的信息  */@Testpublic void test1() {Provincial provincial = dao.selectProvincialById(1);System.out.println(provincial);}}

02.使用单表的单独查询

只需要修改mapper文件内容 其他代码不变

<?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="cn.bdqn.dao.ProvincialDao"><select id="selectCountryByProvincialId" resultType="Country">select cid,cname from country where cid=#{xxx}<!--#{xxx}就是resultMap 中 association节点中的column属性 --></select><resultMap type="Provincial" id="provincialMap"><id property="pId" column="pid"/><result property="pName" column="pname"/><!-- 设置关联的属性     select:关联的查询结果 --><association property="country" javaType="Country"select="selectCountryByProvincialId" column="countryid" /></resultMap><!-- 多表的单独查询   常用的方式 可以使用延迟加载策略 --><select id="selectProvincialById" resultMap="provincialMap">select  pid,pname,countryid from  provincialwhere  pid=#{xxx}   <!--  #{xxx} 用户传递参数的占位符  --></select></mapper>

转载于:https://www.cnblogs.com/HHR-SUN/p/7201562.html

mybatis08--关联查询多对一相关推荐

  1. NHibernate之旅(11):探索多对多关系及其关联查询

    本节内容 多对多关系引入 多对多映射关系 多对多关联查询 1.原生SQL关联查询 2.HQL关联查询 3.Criteria API关联查询 结语 多对多关系引入 让我们再次回顾在第二篇中建立的数据模型 ...

  2. java多对多关联数据操作,hibernate实施多对多关联查询时,关联表数据被删除

    hibernate执行多对多关联查询时,关联表数据被删除 本帖最后由 binbb521 于 2012-12-04 11:48:29 编辑 S2SH框架开发的网站,执行两个多对多关系的表查询时,关联两个 ...

  3. 对于多对多关系的对象,如何建表与关联查询(转载)

    (一)背景介绍   在数据库中建表时,很容易遇到一种情况:一个学生选修了多门课,而每门课有多名学生选修,"学生"和"课程"之间就是典型的多对多关系. (二)如何 ...

  4. SpringBoot实现1对1、1对多、多对多关联查询——基于SpringBoot和Vue的后台管理系统项目系列博客(十八)

    系列文章目录 系统功能演示--基于SpringBoot和Vue的后台管理系统项目系列博客(一) Vue2安装并集成ElementUI--基于SpringBoot和Vue的后台管理系统项目系列博客(二) ...

  5. Mybatis的多表关联查询(多对多)

    Mybatis的多表关联查询(多对多) 项目目录结构 实现 Role 到 User 多对多 业务要求 用户与角色的关系模型 编写角色实体类 编写 Role 持久层接口 实现的 SQL 语句 编写映射文 ...

  6. mybatis实现多对多关联查询(超详细版)

    mybatis实现多对多关联查询XML实现 ​ 在开发过程中,持久层架mybatis为我们封装了SQL操作,只需要提供相应的SQL语句即可查询出结果,若结合逆向工程插件便可免去写一些简单SQL的繁琐工 ...

  7. MyBatis 如何实现一个多对多的关联查询呢?

    转自: MyBatis 如何实现一个多对多的关联查询呢? 下文将通过示例的方式,讲述多对多的关联查询,如下所示: 例 ,一个订单可以有多种商品, 一种商品可以对应多个订单, 订单与商品就是多对多的级联 ...

  8. mybatis一对多关联查询_一对一,一对多,多对多查询及延迟加载(N+1问题)分析

    推荐学习 重识SSM,"超高频面试点+源码解析+实战PDF",一次性干掉全拿走 全网独家的"MySQL高级知识"集合,骨灰级收藏,手慢则无 "吃&qu ...

  9. 数据库学习day_03:关联关系/ 关联查询/ JDBC

    关联关系 创建表时,表与表之间存在的业务关系 外键: 用来建立关系的字段称为外键 有哪些关系: 一对一:有AB两张表,A表的一条数据对应B表的一条,同时B表的1条也对应A表的一条,称为一对一关系. 如 ...

  10. asp多表查询并显示_SpringBoot系列(五):SpringBoot整合Mybatis实现多表关联查询

    本文我们将继续分享介绍Spring Boot在整合Mybatis开发企业级应用时其他典型的业务场景,即Mybatis是如何实现多表关联查询时将查询结果集与对象进行映射的,主要的内容包含"一对 ...

最新文章

  1. ZooKeeper和CAP理论及一致性原则
  2. __slots__的作用
  3. BugKuCTF 加密 ok
  4. 2019年第十届蓝桥杯 - 省赛 - C/C++大学A组 - D. 迷宫
  5. Java基础IO流(五)RandomAccessFile
  6. 计算机基础知识与程序设计二,计算机基础与程序设计.doc
  7. OAuth2实现原理
  8. Fantom已开始网络升级,大约需2个小时
  9. Python-初体验
  10. 关于使用Navicat
  11. 如何在ogre游戏界面添加自己的信息,比如显示某变量的值
  12. 描边图标,用PS绘制简单的书本图标
  13. STM32 rtc唤醒 低功耗待机模式 避免iwdog看门狗方案
  14. MySQL学习笔记(12)—— SQL触发器:
  15. kk5.0电脑版 服务器信息,1 月 2017 累积更新 5.0.8308.984 Lync Server 2013 web 组件服务器...
  16. Android N DisplayManager服务解析(二)
  17. python使用金山词霸的翻译功能(调试工具断点的使用)
  18. 国内头部高科技企业招聘:大数据方向
  19. List接口(ArrayList集合和LinkedList集合)
  20. HTML函数多个条件并列,countifs多个并列条件(countifs同一列2个条件

热门文章

  1. freebsd 域名服务器
  2. Oracle Linux 6.1 说明
  3. VS Code插件之Cordova Tools
  4. 【转】Linux查看物理CPU个数、核数、逻辑CPU个数
  5. [转载]关于Java reference的一篇博文
  6. Eclipse上的项目分享到GitHub
  7. CSS中的EM属性-弹性布局
  8. C#路径/文件/目录/I/O常见操作汇总(一)
  9. 计算时间差的Oracle函数
  10. POJ3122贪心或者二分(分蛋糕)