博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MyBatis关联关系
阅读量:5158 次
发布时间:2019-06-13

本文共 7164 字,大约阅读时间需要 23 分钟。

1、一对多:一个国家对应多个城市

01.实体类

package cn.pb.bean; import java.util.Set; /**  * 国家的实体类  */ public class Country {
private Integer cId;//国家的编号 private String cName;//国家的名称 //关联省会的属性 private Set
provincials; 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 Set
getProvincials() {
return provincials; } public void setProvincials(Set
provincials) {
this.provincials = provincials; } public Country(Integer cId, String cName, Set
provincials) {
this.cId = cId; this.cName = cName; this.provincials = provincials; } public Country() {
} @Override public String toString() {
return "Country{" + "cId=" + cId + ", cName='" + cName + '\'' + ", provincials=" + provincials + '}'; } }
package cn.pb.bean; /**  * 省会对应的实体类  */ public class Provincial {
private Integer pId; //省会的编号 private String pName; //省会名称 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 + "]"; } }

02.创建对应的dao和mapper文件

 

public interface CountryDao {    /**     * 根据国家的id查询出国家的信息  以及国家下面的省会信息     */    Country selectCountryById(Integer cId);}

 

03.mapper.xm文件=====单条SQL不能使用延迟加载

04.mapper.xm文件=====多条SQL可以使用延迟加载

05.在MyBatis.xml文件中 管理Mapper文件

 

06.测试类代码

public class CountryTest {
CountryDao dao=null; SqlSession session=null; Logger log=Logger.getLogger(CountryTest.class);
/**      * 在所有的test测试方法执行之前 都要执行的操作      */     @Before     public void before(){
//获取session session= SessionFactoryUtil.getSession(); dao=session.getMapper(CountryDao.class); //获取执行的类对象 } @After public void after(){
if (session!=null){
session.close(); } } /** * 根据国家的编号 查询出 国家对应省会的信息 * 没有延迟加载 */ @Test public void selectCountry(){
Country country = dao.selectCountryById(1); log.debug(country); } /** * 根据国家的编号 查询出 国家对应省会的信息 * 设置延迟加载 *01.在mybati核心配置文件中 增加setting节点 *02.节点中增加 *
*
*/ @Test public void selectCountryLazy(){
Country country = dao.selectCountryById(2); log.debug(country.getcName()); //只查询国家的名称 如果开启了延迟加载有1条sql log.debug(country.getcName()); //只查询国家的名称 如果没开启了延迟加载有2条sql log.debug(country.getProvincials()); //查询国家对应的省会 无论有没有开启了延迟加载都有2条sql } }
 

07.在MyBatis.xml中核心配置文件中的配置延迟加载

 

 

2、多对一:多个城市对应一个国家

01.实体类

package cn.pb.bean; /**  * 国家的实体类  */ 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 ; } }
 
package cn.pb.bean; /**  * 省会对应的实体类  */ 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 + "]"; } }
 

02.创建对应的dao和mapper文件

 

public interface CountryDao {
/** * 根据省会的id 查询出 省会 以及对应的国家 */ Provincial selectProvincialById(Serializable id); }

 

03.mapper.xm文件=====单条SQL不能使用延迟加载

04.mapper.xm文件=====多条SQL可以使用延迟加载

 

05.在MyBatis.xml文件中 管理Mapper文件

 

06.测试类代码

public class CountryTest {
CountryDao dao=null; SqlSession session=null; Logger log=Logger.getLogger(CountryTest.class); /** * 在所有的test测试方法执行之前 都要执行的操作 */ @Before public void before(){
//获取session session= SessionFactoryUtil.getSession(); dao=session.getMapper(CountryDao.class); //获取执行的类对象 } @After public void after(){
if (session!=null){
session.close(); } } /** * 根据国家的编号 查询出 国家对应省会的信息 * 设置延迟加载 *01.在mybati核心配置文件中 增加setting节点 *02.节点中增加 *
*
*/ @Test public void selectCountryLazy(){
Provincial provincial = dao.selectProvincialById(1); //开启延迟加载的情况 直接输出省会的名称 执行1条sql log.debug(provincial.getpName()); log.debug(provincial.getCountry().getcName()); //执行2条 } }

 

转载于:https://www.cnblogs.com/lyb0103/p/7573408.html

你可能感兴趣的文章
HTML5简单入门系列(四)
查看>>
实现字符串反转
查看>>
转载:《TypeScript 中文入门教程》 5、命名空间和模块
查看>>
苹果开发中常用英语单词
查看>>
[USACO 1.4.3]等差数列
查看>>
Shader Overview
查看>>
Reveal 配置与使用
查看>>
Java中反射的学习与理解(一)
查看>>
C语言初学 俩数相除问题
查看>>
B/S和C/S架构的区别
查看>>
[Java] Java record
查看>>
jQuery - 控制元素显示、隐藏、切换、滑动的方法
查看>>
postgresql学习文档
查看>>
Struts2返回JSON数据的具体应用范例
查看>>
js深度克隆对象、数组
查看>>
socket阻塞与非阻塞,同步与异步
查看>>
团队工作第二天
查看>>
System类
查看>>
tableView
查看>>
Happy Great BG-卡精度
查看>>