mybatis08--关联查询多对一
根据省会的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();
}
@Override
public 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();
}
@Override
public 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,provincial
where 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; @Before
public void before() {
// 因为需要关闭session 需要把session提取出去
session = SessionUtil.getSession();
dao = session.getMapper(ProvincialDao.class);
} @After
public void after() {
if (session != null) {
session.close();
}
} /**
* 根据省会的id查询出省会和对应国家的信息
*/
@Test
public 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 provincial
where pid=#{xxx} <!-- #{xxx} 用户传递参数的占位符 -->
</select> </mapper>
mybatis08--关联查询多对一的更多相关文章
- [NHibernate]多对多关系(关联查询)
目录 写在前面 文档与系列文章 多对多关系关联查询 总结 写在前面 上篇文章介绍了nhibernate中对一对多关系进行关联查询的几种方式,以及在使用过程需要注意的问题.这篇文章对多对多关系的查询处理 ...
- [转]NHibernate之旅(11):探索多对多关系及其关联查询
本节内容 多对多关系引入 多对多映射关系 多对多关联查询 1.原生SQL关联查询 2.HQL关联查询 3.Criteria API关联查询 结语 多对多关系引入 让我们再次回顾在第二篇中建立的数据模型 ...
- NHibernate教程(11)--多对多关联查询
本节内容 多对多关系引入 多对多映射关系 多对多关联查询 1.原生SQL关联查询 2.HQL关联查询 3.Criteria API关联查询 结语 多对多关系引入 让我们再次回顾在第二篇中建立的数据模型 ...
- mybatis实战教程二:多对一关联查询(一对多)
多对一关联查询 一.数据库关系.article表和user表示多对一的关系 CREATE TABLE `article` ( `id` ) NOT NULL AUTO_INCREMENT, `user ...
- mybatis_11关联查询_多对多
一对一:模型里面有模型 一对多:模型里面有集合 多对多:集合里面有集合 映射思路 pojo类设计思路 v 将用户信息映射到user中. v 在user类中添加订单列表属性List<Ord ...
- Mybatis关联查询之一对多和多对一XML配置详解
平时在开发过程中dao.bean和XML文件都是自动生成的,很少写XML的配置关系,今天记录一下mybatis的关联查询中的多对一和一对多的情况. 首先是有两张表(学生表Student和老师Teach ...
- spring data jpa关联查询(一对一、一对多、多对多)
在实际过往的项目中,常用的查询操作有:1.单表查询,2.一对一查询(主表和详情表)3.一对多查询(一张主表,多张子表)4.多对多查询(如权限控制,用户.角色多对多).做个总结,所以废话不多说. 使用i ...
- mybatis多对多关联查询
多对多关系 一个学生可以选多门课程,而一门课程可以由多个学生选择,这就是一个典型的多对多关联关系.所谓多对多关系,其实是由两个互反的一对多关系组成.即多对多关系都会通过一个中间表来建立,例如选课表.学 ...
- Python--day64--找到作者关联的所有书籍对象、ORM多对多关联查询的原理
找到当前作者关联的所有书籍对象: ORM多对多关联查询的原理: 编辑作者:
- MyBatis-Plus不写任何resultMap和SQL执行一对一、一对多、多对多关联查询
对于一对一,一对多的关联查询,Mybatis-Plus官方示例(mybatis-plus-sample-resultmap)在处理时,需要编写查询方法及配置resultMap,并且写SQL. 为了简化 ...
随机推荐
- 下载Android kernel
方法一: https://source.android.com/setup/building-kernels 方法二: 在按照https://source.android.com/setup/down ...
- 什么是crf
什么是crf 利用crf++进行实体识别的流程 确定标签体系: 确定特征模板文件: 处理训练数据文件: 模型训练. 确定标签体系 大部分情况下,标签体系越复杂准确度也越高,但相应的训练时间也会增加.因 ...
- 【经典】5种IO模型 | IO多路复用
上篇回顾:静态服务器+压测 3.2.概念篇 1.同步与异步 同步是指一个任务的完成需要依赖另外一个任务时,只有等待被依赖的任务完成后,依赖的任务才能算完成. 异步是指不需要等待被依赖的任务完成,只是通 ...
- 转: ffmpeg循环推流方法
from: https://blog.csdn.net/weiyuefei/article/details/64125208 ffmpeg循环推流方法 You should be able to u ...
- WIN10系统提示无法使用内置管理员账户打开XXX应用程序怎么办
重装了系统之后,只保留Administrator账户,结果打开程序的时候回弹出这个提示 运行,输入secpol.msc 本地策略-安全选项,启用下面这个,然后重启计算机
- 天府大讲堂:5G时代的物联网发展趋势与产业变革
摘要:国家973物联网首席科学家,中科院上海微系统与信息技术研究所副所长,无锡物联网产业研究院院长刘海涛教授讲授的5G时代的物联网发展趋势与产业变革意义深刻.作者根据天府大讲堂听讲内容加工整理所得,旨 ...
- 【转载】springboot四 全局异常处理
http://tengj.top/2018/05/16/springboot13/ https://www.jb51.net/article/110533.htm
- 转 Java虚拟机5:Java垃圾回收(GC)机制详解
转 Java虚拟机5:Java垃圾回收(GC)机制详解 Java虚拟机5:Java垃圾回收(GC)机制详解 哪些内存需要回收? 哪些内存需要回收是垃圾回收机制第一个要考虑的问题,所谓“要回收的垃圾”无 ...
- SNF软件开发机器人-子系统-功能-数据列表分页与不分页-瀑布式分页-如何配置?
[列表]分页 1.效果展示: (1)不分页 (2)普通分页 (3)瀑布式分页 2.使用说明: 打开显示页面,点击开发者选项的简单配置按钮.在功能表信息中选择需要的分页方式.普通分页和瀑布式分页需要配合 ...
- Metadata GC Threshold导致的full gc分析
gc log 两次full gc 均是Metadata GC导致, OpenJDK -Bit Server VM ( :: by (Red Hat -) Memory: 4k page, physic ...