mybatis学习笔记(四)SQL映射语句

select返回类型可以用resultType,也可以用resultMap,resultType是直接表示返回类型的,而resultMap则是对外部ResultMap的引用,但是resultType跟resultMap不能同时存在。在MyBatis进行查询映射的时候,其实查询出来的每一个属性都是放在一个对应的Map里面的,其中键是属性名,值则是其对应的值。当提供的返回类型属性是resultType的时候,MyBatis会将Map里面的键值对取出赋给resultType所指定的对象对应的属性。所以其实MyBatis的每一个查询映射的返回类型都是ResultMap,只是当我们提供的返回类型属性是resultType的时候,MyBatis对自动的给我们把对应的值赋给resultType所指定对象的属性,而当我们提供的返回类型是resultMap的时候,因为Map不能很好表示领域模型,我们就需要自己再进一步的把它转化为对应的对象,这常常在复杂查询中很有作用。

当Java接口与XML文件在一个相对路径下时,可以不在myBatis配置文件的mappers中声明:

[html]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. <!-- 列出映射文件 -->  
  2. <mappers>  
  3.     <mapper resource="com/mucfc/model/CustomerMapper.xml" />  
  4.     <mapper resource="com/mucfc/model/TicketMapper.xml" />   
  5. </mappers>  

SQL 映射XML 文件一些初级的元素:

[sql]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. 1. cache – 配置给定模式的缓存  
  2. 2. cache-ref – 从别的模式中引用一个缓存  
  3. 3. resultMap – 这是最复杂而却强大的一个元素了,它描述如何从结果集中加载对象  
  4. 4. sql – 一个可以被其他语句复用的SQL 块  
  5. 5. insert – 映射INSERT 语句  
  6. 6. update – 映射UPDATE 语句  
  7. 7. delete – 映射DELEETE 语句  
  8. 8. select - 映射SELECT语句  


resultMap 是MyBatis 中最重要最强大的元素了。你可以让你比使用JDBC 调用结果集省掉90%的代码,也可以让你做许多JDBC 不支持的事。现实上,要写一个等同类似于交互的映射这样的复杂语句,可能要上千行的代码。ResultMaps 的目的,就是这样简单的语句而不需要多余的结果映射,更多复杂的语句,除了只要一些绝对必须的语句描述关系以外,再也不需要其它的。
resultMap属性:type为java实体类;id为此resultMap的标识。
resultMap可以设置的映射:

[sql]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. 1. constructor – 用来将结果反射给一个实例化好的类的构造器  
  2. a) idArg – ID 参数;将结果集标记为ID,以方便全局调用  
  3. b) arg –反射到构造器的通常结果  
  4. 2. id – ID 结果,将结果集标记为ID,以方便全局调用  
  5. 3. result – 反射到JavaBean 属性的普通结果  
  6. 4. association – 复杂类型的结合;多个结果合成的类型  
  7. a) nested result mappings – 几resultMap 自身嵌套关联,也可以引用到一个其它上  
  8. 5. collection –复杂类型集合a collection of complex types  
  9. 6. nested result mappings – resultMap 的集合,也可以引用到一个其它上  
  10. 7. discriminator – 使用一个结果值以决定使用哪个resultMap  
  11. a) case – 基本一些值的结果映射的case 情形  
  12. i. nested result mappings –一个case 情形本身就是一个结果映射,因此也可以包括一些相同的元素,也可以引用一个外部resultMap。  

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值