舒大少博客

一个95后少年的个人博客

当前时间为:
欢迎大家来到舒大少博客http://admin.evshou.com,广告合作以及淘宝商家推广请微信联系15357240395
...
零基础学Python从入门到精通 python基础教程基础

【在售价】34.90 元
【在售价】34.90 元

立即领券
...
Python编程从入门到精通 视频教学 python语言程序设计

【在售价】29.80 元
【券后价】19.80元

立即领券
...
未来教育计算机二级ms office题库电子版c语言

【在售价】28.00 元
【在售价】28.00 元

立即领券
...
Python3视频零基础教程自学入门到精通编程语言程序设计网络爬虫

【在售价】62.00 元
【券后价】52.00元

立即领券
...
Python编程从入门到精通 零基础学python数据分析

【在售价】29.80 元
【券后价】19.80元

立即领券

2020java框架教程之mybatis嵌套查询以及延迟加载

2020-12-31 11:39:05
swq1822677238

手机扫码查看

2020java框架教程之mybatis嵌套查询以及延迟加载

2020java框架教程之mybatis嵌套查询以及延迟加载

一对一查询

用户与简历

1.数据库表:

简历数据库表:

CREATE TABLE `resume` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `resume_name` varchar(50) NOT NULL,
  `resume_uid` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `resume_uid` (`resume_uid`),
  CONSTRAINT `resume_ibfk_1` FOREIGN KEY (`resume_uid`) REFERENCES `member` (`uid`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8

用户数据库表:

CREATE TABLE `member` (
  `uid` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(50) NOT NULL,
  `sex` varchar(2) NOT NULL,
  PRIMARY KEY (`uid`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8

2.在两个实体类创建对方实体属性

3.配置mapper.xml

用户的mapper.xml

<resultMap id="BaseResultMap" type="com.evshou.admin.entity.Member" >
  <id column="uid" property="uid" jdbcType="INTEGER" />
  <result column="username" property="username" jdbcType="VARCHAR" />
  <result column="sex" property="sex" jdbcType="VARCHAR" />
</resultMap>
<select id="queryMemberByUid" resultMap="BaseResultMap">
  select * from member where uid=#{uid}
</select>

简历的mapper.xml

<resultMap id="BaseResultMap" type="com.evshou.admin.entity.Resume" >
  <id column="id" property="id" jdbcType="INTEGER" />
  <result column="resume_name" property="resumeName" jdbcType="VARCHAR" />
  <result column="resume_uid" property="resumeUid" jdbcType="INTEGER" />
  <association property="member" javaType="Member"
               select="com.evshou.admin.mapper.MemberMapper.queryMemberByUid"
               column="resume_uid"/>
</resultMap>
<select id="queryResumeByUId" resultMap="BaseResultMap">
  select  * from resume where resume_uid=#{uid}
</select>

4.创建接口

用户接口:

Member queryMemberByUid();

简历接口:

Resume queryResumeByUId(Integer uid);

5.测试

@Test
public void queryResumeByUId(){
    SqlSession ss = MybatisUtils.getSqlSession();
    ResumeMapper rm = ss.getMapper(ResumeMapper.class);
    Resume resume = rm.queryResumeByUId(1);
    System.out.println(resume);
    System.out.println(resume.getMember());
}


一对多和多对一

部门与员工

通过部门编号查询部门所在的员工,所以员工是List集合

1.数据库表

create table dept(#部门
    id int primary key  auto_increment,
    name varchar(50) ,
    loc varchar(100)
)charset=utf8;
create table emp(#员工
    id int auto_increment primary key ,
    name varchar(50),
    salary double,
    dep_id int ,
    foreign key (dep_id) references dept(id)
)charset=utf8;

2.实体类

3.接口

4.映射文件


5.测试代码


延迟加载(了解)

在mybatis-config.xml配置延迟加载

<settings>
    <!-- 当使用嵌套查询时,如果查询中只用到了一方的数据,则不会触发另一方的查询 -->
    <setting name="lazyLoadingEnabled" value="true"/><!--开启延迟加载(默认false)-->
</settings>

发表评论

邮箱地址不会被公开。 必填项已用*标注