码迷,mamicode.com
首页 > 数据库 > 详细

Mybatis 的基本要素—SQL 映射文件

时间:2018-10-05 14:08:22      阅读:169      评论:0      收藏:0      [点我收藏+]

标签:复杂数据类型   png   类型   ati   eal   参数传递   删除   别名   结构   

MyBatis 真正的强大在于映射语句,相对于它强大的功能,SQL 映射文件的配置却是相当简单。对比 SQL 映射配置和 JDBC 代码,发现使用 SQL 映射文件配置可减少 50% 以上的代码,并且MyBatis 专注于SQL,对于开发人员来说,也可极大限度地进行 SQL 调优,以保证性能。

SQL 映射文件的几个顶级元素(按照定义的顺序)

  ? mapper:映射文件的根元素节点,只有一个属性 namespace(命名空间) 。


   namespace 作用如下
     1、用于区别不同的 mapper,namespace 和 子元素的 id 联合保证全局唯一。
     2、绑定DAO接口。即面向接口编程,当 namespace 绑定某一接口之后,可以不用书写该接口的实现类,MyBatis 会通过接口的完整限定名查找到对应的 mapper 配置来执行 SQL 语句。因此 namespace 的命名必须跟某个接口同名,接口中的方法与映射文件中 SQL 语句 id 一一对应。

 

  ? cache :配置给定命名空间的缓存

  ? cache-ref :从其他命名空间引用缓存配置

  ? resultMap:用来描述数据库结果集和对象的对应关系

  ? sql:可以重用的 SQL 块,也可以被其他语句引用

  ? insert:映射插入语句

  ? update:映射更新语句

  ? delete:映射删除语句

  ? select:映射查询语句

  注意点

    关于 MyBatis 的 SQL 映射文件中的 mapper 元素的 namespace 属性有如下要求。
      (1) namespace 的命名必须跟某个 DAO 接口同名,同属于 DAO 层,故代码结构上,映射文件与该 DAO 接口应放置在同一 package 下,并且习惯上都是以 Mapper 结尾( UserMapper.java、 UserMapper.xml)。
      (2)在不同的 mapper 文件中,子元素的 id 可以相同,MyBatis 通过 namespace 和子元素的 id 联合区分。接口中的方法与映射文件中 SQL 语句 id 应一一对应。

 

Mybatis 别名

  完全限定名:如:cn.mybatis.pojo.User

   别名:User / user  (需要先配置 typeAliases 才能使用

 

  对于普通的 Java 类型,有许多内建的类型别名,并且它们对大小写不敏感。如:基础数据类型 “string” ,这是一个别名,代表 String ,属于一个内建的类型别名。

  技术分享图片

 

 

select 元素

  select:表示查询语句,是 MyBatis 最常用的元素之一,select 语句有很多属性可以详细配置每一条语句。

    常用属性如下:

     id 属性:命名空间中唯一的标识符,与  DAO 接口中某一方法名一一对应,可以被用来引用这条语句。DAO 接口中的方法名与映射文件中的 SQL 语句 id 一一对应。
     resultType 属性:表示 SQL 查询语句返回值类型的完全限定名或别名。(如果核心配置文件中设置了 typeAliases则返回类型可以不写完全限定名,且不区分大小写

      parameterType 属性:表示查询语句传入参数的类型的完全限定名或别名。它支持基础数据类型和复杂数据类型。说明:参数传递使用 #{参数名}  
    基础数据类型:int、String、Date等,只能传入一个,通过#{参数名}即可获取传入的值。
    复杂数据类型:Java实体类、Map等,通过 #{属性名} 或者 #{map 的 keyName}即可获取传入值

 

 

 

 

 

Mybatis 的基本要素—SQL 映射文件

标签:复杂数据类型   png   类型   ati   eal   参数传递   删除   别名   结构   

原文地址:https://www.cnblogs.com/wxdestiny/p/9744615.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!