3.28
建立 category 与 product 表
编写 实体层 entity
编写 mapper 层, 接口 , 再编写映射文件
当 实体层的属性 与 数据库中表的列名 对应不上时, 如何解决?
mybatis 提供 两种解决办法:
方法1: 修改sql 进行 列的重命名
方法2: 配置 resultMap ,进行关联映射
实体类 表
Category.java category
cno id
name cname
方法1: 修改sql , 对列 进行 重命名
select id as cno,cname name
from category
3.29 resultMap: 当 属性与 列名对应不上时,resultMap
resultType: 基本数据类型 或String 或 实体类类名
注意: resultMap 与 resultTye 在同一个标签里 只能出现一个
resultMap:
想使用resultMap 必须 先 声明一个 resultMap
在xxxMapper.xml 中 定义的resultMap , 可以多次使用
resultMap的属性问题
id: 任意起的名字, 推荐 类型+Map
type: 类名, 注意 在mybatis-config.xml 配置别名后 才允许直接写类名
否则 也需要写全路径的包名.类名
关于resultMap的子标签:
<id/> --- 一般就是 与类名对应的表的 主键的列,只写一次
<result/> result 配置 非主键的列, result标签可以写多个,
子标签的 property 与 column
property 属性 --类里 才有属性, 属性 区分大小写
column 列名 -- 表里 才有列 --- 列 不区分大小写
在 <select 标签时 配置 resultMap="resultMap标签的id的值"> 即可
练习:
1 使用方法1 : 查询 全部商品信息
2 使用方法2: 查询全部商品信息
简化实体层配置: 借助 lombok.jar
修改pom.xml 增加 lombok.jar
然后 在实体层 只需要编写属性 即可
@ToString //重写 同String()
@NoArgsConstructor //无参构造
@AllArgsConstructor //全参构造
@Data //get/set
一对一:
product category
一种商品 对应一个种类别
一个员工 属于 一个部门
他们之间的关系 1:1
在 查询商品信息的同时 要显示出 类别信息, 即显示编号又显示类别名称
一对一实现步骤: 有种实现方式: 一种叫关联查询, 一种叫嵌套查询
a. 一个商品 对应一个类别
因此 修改 Product.java 增加 一个类别的对象
b. resultMap 增加 association 配置 一对一
方法1: 关联查询
首先 修改 <select > 标签的sql 语句,进行关联查询,
sql 语法:
select 列名,列名2,.....
from 表名 表的别名a, 表名2 表名2的别名b
where a.外键=b.主键
注意: sql的列 必须唯一, 如果 出现重复列,则必须对重复列进行重写命名
接下来 为 resultMap 增加 association 配置
association 的property 对应的是 属性,
javaType 对应的是 属性的类型
配置 <id/> <result/>
练习 : 创建新的 mybatis2_1, 执行查询 所有的员工信息并显示 部门名称
方法2: 嵌套查询 4.1 嵌套查询,
查询产品信息时 显示 类别信息
首先 为ProductMapper.java 增加 List<Product> findAllByInner();
编写 ProductMapper.xml 增加 select , sql 编写 单表查询
由于1对一 因此 在resultMap中配置 association 的select 及 column 及 property
association :
property: 实体类中的属性
select : 调用 另外的mapper的查询方法, 注意写 全路径的名字,即包名.类名.方法名
column: 表示 调用 select的方法名 对应的参数列,
4.1 嵌套查询 vs 连接查询
sql不同:
连接查询:涉及多表连接, 当出现重复列时 需要对重复的列进行 列的重命名
嵌套查询: 就是单表查询
参与的mapper文件不同:
连接查询: 在一个mapper文件中 配置即可
嵌套查询: 需要 在 association或collection 中 通过 select 调用 另外的mapper
执行效率:
连接查询: 直接查询, 多表连接查
嵌套查询: 是 每执行一个Product 就会查一个Category
练习: emp 与 dept 的 一对一的嵌套查询
没有合适的资源?快使用搜索试试~ 我知道了~
mybatis 一对一查询讲解,涉及 嵌套查询及连接查询
共20个文件
xml:7个
java:5个
class:5个
需积分: 1 0 下载量 52 浏览量
2024-04-01
11:16:34
上传
评论
收藏 182.93MB RAR 举报
温馨提示
嵌套查询 vs 连接查询 sql不同: 连接查询:涉及多表连接, 当出现重复列时 需要对重复的列进行 列的重命名 嵌套查询: 就是单表查询 参与的mapper文件不同: 连接查询: 在一个mapper文件中 配置即可 嵌套查询: 需要 在 association或collection 中 通过 select 调用 另外的mapper
资源推荐
资源详情
资源评论
收起资源包目录
mybatis一对一嵌套查询及连接查询.rar (20个子文件)
一对一.mp4 166.5MB
嵌套查询 1对1.mp4 73.99MB
mybatis2
pom.xml 2KB
src
test
java
TestCategory.java 2KB
main
resources
mapper
ProductMapper.xml 2KB
CategoryMapper.xml 1KB
mybatis-config.xml 2KB
java
mapper
ProductMapper.java 287B
CategoryMapper.java 331B
entity
Product.java 784B
Category.java 430B
target
classes
mapper
ProductMapper.xml 2KB
CategoryMapper.class 257B
CategoryMapper.xml 1KB
ProductMapper.class 245B
mybatis-config.xml 2KB
entity
Category.class 2KB
Product.class 4KB
test-classes
TestCategory.class 2KB
generated-test-sources
test-annotations
generated-sources
annotations
笔记.txt 4KB
共 20 条
- 1
资源评论
射手座的程序媛
- 粉丝: 1895
- 资源: 193
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功