Mybatis 各种关联查询
1多对一 单条 示例
数据库里创建两张表 , 一张表里包含另一张表的一条数据 ,以此作为依据 ,进行 操作
创建实体类在包含外键的实体类中创建一个另一个实体类的集合 (上图)
开始正式的代码书写
在接口中 写一个 主表的 方法
开始写我们的小配置
运用resultMap 来做列绑定,也防止数据库列名和实体类属性名冲突
select 中所用的查询语句也就是一般的多表连接查询语句
resultMap节点,外层就是 的dept 的主键和其他的绑定,里面的collection就是用来绑定 集合的 property 属性值为在主表实体中定义的集合名,oftype为集合类型
在里面写入集合类型的列绑定 ,这样第一个也就出来了
2多对一 多条 示例
表的话还是用上面那两张表 , 我们 就只需要 在创建一个接口的方法就行
这就 使用方法 ,
1 更改了 sql 多条 sql
2 外层实体类嵌套不变 Collection节点增加属性 一 column 列 这是下面select 节点查询数据的一句 select 属性 此为一个 select节点的属性 按照主表给的值 column 进行自己的查询
3 下面说一对多的单挑sql 还是拿这两张表作物素材来写
在主表实体类中 , 创建一个 从表的集合,上图有
select 节点 依旧是 一个简单的 表 关 联 查 询
讲解一下 resultMap 节点 这回既然在从表中有个对象 , 那 就是 从表在外 ,前面依旧是列的绑定操作 , 主表就要用 association节点了 包含了 两个属性 property javatype
property 的 值为 在从表实体类中的对象名 javatype为他的对象类型 ,里面开始 ,就开始做他的列绑定 ,这样也就成功了。
下面来讲 一对多 多条sql
上面方法 four 就是这会所用的方法 。
1 sql 语句改为了 查询 从表 下面的值是由 查出来的数据列中主表的值进行查询
association 节点 加 入两个属性 select 与 column select 是一个查询主表数据的方法 , column则是条件查询中的值
多对多 需要3张表
3张表 , 说明一个老师能教授多个学生 , 一个学生也能学习多个老师 ,用一张中间表来说明一下,做个关联
先把两方的实体类创建好
在老师表中创建 学生的集合 现在来写 接口方法
现在开始 写 小配置
sql 语句 ,因为两表没有直接关系 , 靠第三张表来体现关系 , 所以下方就是sql语句的写法 。
resultMap节点 ,外层是老师表,做一些列的绑定就行 , 下 面 的 collection 节 点 property 属性的值就是 老师表实体类中学生的集合名 oftype 为 集合 类型 下面也做 学生实体类 的一些 列绑定
自连接查询
自关联
3级分类 的查询
下表说明 pid 为父亲的id pid为0 为顶级 cid 是下一级别的父亲id
例如 图书 pid为0 ,所以说他为顶级 id, 看它的 cid ,之后就会看到 上衣和外套是他的下一级别 这样的数据 下面将演示查询方法
他的select 节点 SQL语句就是 按照 pid 去查 ,然后 再去查他的下一级别
resultMap 节点 依旧是 对前几列的绑定 collection 节点 是绑定 自己集合 的 property 就是集合名 oftype 为集合类名 select 因为就是自己查自己, 所以就用下面那个自己的select节点 column 为 值列 ,拿值进行下一次的查询条件
下面就为 查询写的单测方法 ,以及控制台所出来的数据