1、数据库表

CREATE TABLE `country` (`cid` int(4) NOT NULL AUTO_INCREMENT COMMENT '国家id',`cname` varchar(20) COLLATE utf8_unicode_ci NOT NULL,PRIMARY KEY (`cid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;CREATE TABLE `provincial` (`pid` int(4) NOT NULL AUTO_INCREMENT,`pname` varchar(20) COLLATE utf8_unicode_ci NOT NULL,`countryid` int(4) NOT NULL,PRIMARY KEY (`pid`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

2、实体类

package cn.bdqn.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();}@Overridepublic String toString() {return "Country [cId=" + cId + ", cName=" + cName;}}

package cn.bdqn.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();}/*@Overridepublic String toString() {return "Provincial [pId=" + pId + ", pName=" + pName + ", country="+ country + "]";}*/}

3、mybatis.xml配置文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><!-- 通过properties文件配置连接数据库的四要素 --><properties resource="jdbc.properties" /><settings><!-- 打开延迟加载的开关 -->  <setting name="lazyLoadingEnabled" value="true" />  <!-- 将积极加载改为消息加载即按需加载 -->  <setting name="aggressiveLazyLoading" value="false"/></settings><!-- 设置别名 两种方式 --><typeAliases><!--  01.这种方式别名可以随意取  但是如果有多个 类 就需要配置多个typeAlias <typeAlias type="cn.bdqn.bean.Student" alias="student"/> --><package name="cn.bdqn.bean"/><!-- 02.这种方式要求别名必须使用简写的类名  --></typeAliases><!-- 配置运行环境 可以有多个 environment --><environments default="mysql"><!-- 默认采用的环境 --><environment id="mysql"> <!-- 环境的名称 --><!--配置事务管理 采用jdbc默认的事务管理 之后整合的时候 肯定是交给了 spring来处理了 --><transactionManager type="JDBC" /><!-- 数据源采用的是连接池技术 POOLED:mybatis自带的数据源,JNDI:基于tomcat的数据源 --><dataSource type="POOLED"><property name="driver" value="${jdbc.driver}" /><property name="url" value="${jdbc.url}" /><property name="username" value="${jdbc.username}" /><property name="password" value="${jdbc.password}" /></dataSource></environment></environments><!-- 加载映射文件信息 --><mappers><mapper resource="cn/bdqn/dao/StduentMapper.xml" /><!-- <mapper resource="cn/bdqn/dao/CountryMapper.xml" /> --><mapper resource="cn/bdqn/dao/ProvincialMapper.xml" /></mappers>
</configuration>

4、Dao层接口

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

5、Mapper.xml

<?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 = #{countryid} </select><resultMap type="provincial" id="provincialMap"><id column="pid" property="pId"/><result column="pname" property="pName"/><association property="country" javaType="Country"select="selectCountryByProvincialId" column="countryid" ></association></resultMap><select id="selectProvincialById" resultMap="provincialMap">select pid,pname,countryid from provincialwhere pid = #{pid}</select></mapper>

6、测试类

package cn.bdqn.test;import org.apache.ibatis.session.SqlSession;
import org.apache.log4j.Logger;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;import cn.bdqn.bean.Provincial;
import cn.bdqn.dao.ProvincialDao;
import cn.bdqn.util.MybatisUtil;public class Test1 {private Logger logger = Logger.getLogger(Test1.class);SqlSession session;ProvincialDao dao;@Beforepublic void before() {// 因为需要关闭session 需要把session提取出去session = MybatisUtil.getSqlSession();dao = session.getMapper(ProvincialDao.class);}@Afterpublic void after() {if (session != null) {session.close();}}@Testpublic void test1() {Provincial provincial = dao.selectProvincialById(1);/*logger.debug("provincialId=1======>provincial:" + provincial);*//*logger.debug("provincialId=1======>country:" + provincial.getCountry());*/}
}

转载于:https://www.cnblogs.com/wiseroll/p/7347003.html

mybatis实现延迟加载多对一相关推荐

  1. mybatis教程--延迟加载详解

    延迟加载 1 使用延迟加载意义 在进行数据查询时,为了提高数据库查询性能,尽量使用单表查询,因为单表查询比多表关联查询速度要快. 如果查询单表就可以满足需求,一开始先查询单表,当需要关联信息时,再关联 ...

  2. mybatis高级映射多对多查询(二)

    在这篇博客中,我来介绍下mybatis中的多对多查询的案例,在mybatis中,如何使用ResultMap来实现多对多的查询? 案例:一个user可以有很多role,一个role可以有很多entitl ...

  3. mybatis手写多对多关联映射

    mybatis手写多对多关联映射 1.一对一关联查询 1.1resultType实现 1.2resultMap实现 2.一对多关联查询 3.多对多关联查询 4.resultType与resultMap ...

  4. mybatis 的延迟加载

    mybatis 的延迟加载 (1)什么是延迟加载? 延迟加载,也称为懒加载(LazyLoding). 当代码中执行到查询语句时,并不是直接到DB中执行select语句进行查询,而是根据设置好的延迟策略 ...

  5. mybatis一对多多对多

    转:http://www.cnblogs.com/selene/p/4627446.html 一:订单商品数据模型 1.数据库执行脚本 创建数据库表代码: View Code 测试数据代码: View ...

  6. Mybatis(五) 延迟加载和缓存机制(一级二级缓存)

    踏踏实实踏踏实实,开开心心,开心是一天不开心也是一天,路漫漫其修远兮. --WZY 一.延迟加载 延迟加载就是懒加载,先去查询主表信息,如果用到从表的数据的话,再去查询从表的信息,也就是如果没用到从表 ...

  7. MyBatis(延迟加载 缓存)

    mybatis目录 一对一延迟加载 1.在SqlMapConfig.xml中配置setting标签 2.在IAccoutDao.xml中配置association标签 3.测试类 4.成功运行 一对多 ...

  8. mybatis一对多 多对一

    一.一对多: 实体类 package com.ming.entity;import java.util.List;public class Station {private String Sname; ...

  9. Mybatis中的多对一、一对一、一对多

    首先在数据库创建3个表,老师表.学生表和课程表 其中 1 某一课程和老师是一对一的关系 2 所有课程和老师是多对一的关系 3 某一课程和学生是一对多的关系 表和表中的数据sql语句 /* Navica ...

  10. Mybatis - 一对多/多对一映射

    文章目录 前言 项目结构 一.数据库表 1. 员工表 t_emp 2. 部门表 t_dept 二.实体类 1. Emp 员工实体类(添加多对一属性) 2. dept 部门实体类(添加一对多属性) 三. ...

最新文章

  1. 火遍全国的网络热梗“yyds”,创造者被判刑3年
  2. 第十次ScrumMeeting博客
  3. as3 java 交互_求大佬用 Java 实现这段 AS3 的 socket 通讯功能
  4. 音视频技术开发周刊 | 227
  5. 分布式系统基本副本协议
  6. xcode 4 最低的要求是 10.6.6的版本,如果你是 10.6.3的版本,又不想升级的话。可以考虑通过修改版本号的方法进行安装
  7. uva 10026 Shoemaker's Problem(排序)
  8. 初识 Vue(01)---(输出 Hello World)
  9. 测试工程师应懂的Python知识
  10. slf4j打印未捕获异常信息_谁再悄咪咪的吃掉异常,我上去就是一 JIO
  11. 华为harmonyos公测,华为开启HarmonyOS2.0开发者Beta公测招募第二期
  12. x86 android 显卡 tablet2,Re: android4.4.2将tablet更改为phone
  13. 加密WebSphere Application Server系统密码
  14. 第一届腾讯社招广告大赛总结
  15. 【转载】MAC帧在经过路由器时,其源地址和目的地址会发生改变,路由器的目的地址会出现子在MAC帧中”如何理解?
  16. matlab 复权数据,〖Matlab〗基于通达信股价数据的复权处理(fantuanxiaot版本)
  17. 解决联通宽带域名劫持
  18. Q50:TCP如何保证可靠性?
  19. keras进行时间序列预测
  20. 怎么彻底删除office注册表信息?

热门文章

  1. java中reg=new,JavaScript replace new RegExp使用介绍
  2. javascript拖拽之从浏览器外拖拽(drag)
  3. Hadoop2.7.3完全分布式集群搭建(三节点)
  4. 还在使用集合类完成这些功能?不妨来看看 Guava 集合类!!!
  5. jenkins根据已打包的镜像,自动生成正式镜像
  6. git还原所有更改,拉取远程分支到本地
  7. 某些情况下java md5 base64_encode 与 php md5 base64_encode的签名
  8. dubbox 2.8.4的配置和使用
  9. php的process_field,使用Boost :: Process运行php命令
  10. 有关风向及风向处理的笔记