Mybatis(2)

# 1.resultMap标签

手动配置mybatis的对象装配表

数据库列 —-> java对象属性 对应关系

“`java
resultType 装配数据时 需要字段 与属性一一对应(包含驼峰)

resultMap (复杂数据结构时 更常用) 如果不指定 功能与resultType一直 自动对应
如果指定了 会根据手动指定的列与属性的对应关系装配数据
“`

resultMap 可以替代 resultType

resultMap 中的标签和属性

“`xml
如果是主键列 一般用id标签对应 propertyjava对象的属性 column 数据库中的列
( javaType实体类数据类型 jdbcType数据库列的数据类型 )
不需要配置

如果是普通列 一般用result对应 propertyjava对象的属性 column 数据库中的列

“`

高级映射 (映射数据与对象的对应关系) 如果列不指定 不能自动对应

​ 通常搭配继承一起使用 体现基础字段的对应

association 对应某个实体对象

Emp对象中 有部门信息 在java中 包含一个Dept对象

“`java
package com.javasm.entity;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.Date;
import java.io.Serializable;

/**
* (Emp)实体类
*
* @author makejava
* @since 2024-11-26 09:40:43
*/

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Emp implements Serializable {
private static final long serialVersionUID = -16018027389934188L;

private Integer empno;

private String ename;

private String job;

private Integer mgr;

private String hiredate;

private Double sal;

private Double comm;

//关联部门信息
private Dept dept;

// private Integer deptno;
//
//
// private String dname;
//
// private String loc;

}

“`

映射文件配置

“`xml

















“`

通过sql语句 把需要的数据查询出来

“`sql
select * from emp e,dept d where e.deptno = d.deptno
“`

collection 对应集合

每个部门有多个员工 部门对象中 包含Emp的集合

“`sql
select * from emp e,dept d where e.deptno = d.deptno
“`

“`java
每个Dept中都有多个Emp List
“`

映射配置每个部门有多个员工 部门对象中 包含Emp的集合

“`java
package com.javasm.entity;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;

/**
* @author gfs
* @version 0.1
* @className Dept
* @descriptioin:
* @date 2024/11/26 10:32
* @since jdk11
*/

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Dept {
private Integer deptno;

private String dname;

private String loc;
//多方的数据集合
private List emps;

}

“`

映射配置

“`xml















“`

sql语句

“`sql
select * from dept d left join emp e on d.deptno = e.deptno
order by d.deptno
“`

# 2.数据库关联查询

表有数据关联时 需要做关联查询

— 连表查询

“`sql
— 简化语法 使用内连接
select * from emp e,dept d where e.deptno = d.deptno
— 标准sql语法 内连接
select * from emp e INNER JOIN dept d on e.deptno = d.deptno
“`

“`sql
— 外连接 left right 哪一方显示全集
select d.*,e.* from emp e right join dept d on e.deptno = d.deptno
order by d.deptno

select * from dept d left join emp e on d.deptno = e.deptno
order by d.deptno
“`

— 如果是内连接 连表顺序无影响
— 如果做外联 连表顺序 有影响

多表关联时 全集方向保持一致

# 3.数据库对应关系 java对象对应关系

![Snipaste_2024-11-26_11-17-23](http://43.155.216.63:21080/wp-content/uploads/2025/12/Snipaste_2024-11-26_11-17-23.png

一对一情况下

java中 双方对象 都包含对方的对象 mybatis中使用 association 配置结果

![Snipaste_2024-11-26_11-24-34](http://43.155.216.63:21080/wp-content/uploads/2025/12/Snipaste_2024-11-26_11-24-34.png

一对多情况下

多方 包含一方的集合 collection配置
“`java
dept —-> list

class(班级) —–> list
“`

一方 关联多方的对象 association配置

emp —–> dept

student —> class(班级)

![Snipaste_2024-11-26_14-48-20](http://43.155.216.63:21080/wp-content/uploads/2025/12/Snipaste_2024-11-26_14-48-20.png

多对多情况下

双方都是对方的集合 collection配置

“`java
order —-> list

productInfo –>list
“`
总结:

java中 对象之间的关系

对象中包含某个其他对象 association

对象中包含集合其他对象 collection

# 4.自连接

自连接 需要起别名 通过别名 让mybatis识别哪些是内层 哪些是外层

高级映射标签 association collection 可以多次 和嵌套使用

查省市对应关系数据

“`sql
select ta2.*,ta1.code AS subcode ,ta1.name AS subname ,ta1.pcode AS subpcode
from tb_area ta1 inner join tb_area ta2 on ta1.pcode = ta2.code
where ta2.pcode = 0
“`

映射文件

“`xml








“`

查省市县对应关系数据

“`sql
select ta3.*,ta2.code AS citycode ,ta2.name AS cityname ,ta2.pcode AS citypcode ,
ta1.code AS areacode ,ta1.name AS areaname ,ta1.pcode AS areapcode

from tb_area ta1 inner join tb_area ta2 on ta1.pcode = ta2.code
inner join tb_area ta3 on ta2.pcode = ta3.code
“`

映射文件

“`xml











“`

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇