mybatis(三)动态sql与多表查询对resultMap的封装

mybatis基础讲解:
mybatis(一)数据库事务与环境搭建
mybatis(二)mybatis的执行流程
mybatis(三)动态sql与多表查询
mybatis(四)多参传递、延时加载、缓存及注解开发


mybatis(三)动态sql与多表查询对resultMap的封装_第1张图片
一、动态sql

1.< if > < /if >

//dao.xml文件中的部分代码

注意:标签的 test 属性中写的是对象的属性名,如果是包装类的对象要使用 OGNL 表达式的写法。另外要注意 where 1=1 的作用~!

  1. < where >< where >
//为了简化上面 where 1=1 的条件拼装,我们可以采用标签来简化开发。




  1. < foreach >< /froeach >



SQL 语句:
select 字段 from user where id in (?)
标签用于遍历集合,它的属性:
collection:代表要遍历的集合元素,注意编写时不要写#{} 
open:代表语句的开始部分
close:代表结束部分
item:代表遍历集合的每个元素,生成的变量名
sperator:代表分隔符
  1. < sql>< /sql> (< include>)
Sql 中可将重复的 sql 提取出来,使用时用 include 引用即可,最终达到 sql 重用的目的。


 select * from user




5、 choose, when, otherwise

有些时候,我们不想用到所有的条件语句,而只想从中择其一二。针对这种情况,MyBatis 提供了 choose 元素,它有点像 Java 中的 switch 语句。


6、set


  update Author
    
      username=#{username},
      password=#{password},
    
    
  where id=#{id}


这里,set 元素会动态前置 SET 关键字,同时也会消除无关的逗号,因为用了条件语句之后很可能就会在生成的赋值语句的后面留下这些逗号。

7、trim

常用的属性: 
prefix=”where”//给第一符合条件的语句 加上前缀where 
prefixOverrides=”and” //将最后一条语句的 前缀and 覆盖 
suffix=”and” //给第一符合条件的语句 加上后缀 and 
suffixOverrides=”and”//将最后一条语句的后缀 and 覆盖 
--------------------- 
  

二、多表查询,对结果resultMap的封装

  1. 一对一查询 (返回值为一个对象)
  • 方式1:定义实体类(继承)作为输出类型
    比如说:查询的结果是表1和表2的整合表,那么就新建一个实体类,使其属性与该整合表相对应。

  • 方式2:定义专门的 resultMap 用于映射查询结果

type 属性:指定实体类的全限定类名

id 属性:给定一个唯一标识,是给查询 select 标签引用用的。
-->
返回值是一个集合









id 标签:用于指定主键字段

result 标签:用于指定非主键字段

column 属性:用于指定数据库列名

property 属性:用于指定实体类属性名称
  1. 一对多查询(返回值为一个对象,该对象有一个属性是另一个对象)

返回值是一个Account对象
Account实体类中有属性User类
















3、返回结果 (一个对象有一个属性List<对象>)

查询结果为:对象中包含list 集合 














你可能感兴趣的:(spring,mybatis基础,动态sql,mybatis多表查询,resultmap结果集的封装)