MyBatis 的基本要素—SQL 映射文件
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
对于普通的 Java 类型,有许多内建的类型别名,并且它们对大小写不敏感。如:基础数据类型 “string” ,这是一个别名,代表 String ,属于一个内建的类型别名。
| 别名 | string | int | byte | long | short | integer | arraylist | double | float | boolean | date | map | hashmap | list | decimal | bigdecimal | object | collection | iterator |
| 映射的类型 | String | Integer | Byte | Long | Short | Integer | ArrayList | Double | Float | Boolean | Date | Map | HashMap | List | BigDecimal | BigDecimal | Object | Collection | Iterator |
说明:
1、除了内建的类型别名外,还可以为自定义的类设置别名,使用 ( typeAliases )在 mybatis-config.xml 中的设置,在映射文件中可直接使用别名,以减少配置文件的代码。
2、别名对大小写不敏感,即不区分大小写。
select 元素
select:表示查询语句,是 MyBatis 最常用的元素之一,select 语句有很多属性可以详细配置每一条语句。
常用属性如下:
id 属性:命名空间中唯一的标识符,与 DAO 接口中某一方法名一一对应,可以被用来引用这条语句。DAO 接口中的方法名与映射文件中的 SQL 语句 id 一一对应。
resultType 属性:表示 SQL 查询语句返回值类型的完全限定名或别名。
parameterType 属性:表示查询语句传入参数的类型的完全限定名或别名。它支持基础数据类型和复杂数据类型。说明:参数传递使用 #{参数名}
基础数据类型:int、String、Date等,只能传入一个,通过#{参数名}即可获取传入的值。
复杂数据类型:Java实体类、Map等,通过 #{属性名} 或者 #{map 的 keyName}即可获取传入值
说明:
1、insert、update、delete 元素的 id 属性、parameter 属性与 select 元素用法一样。
2、insert、update、delete 元素中均没有 resultType 属性,只有查询操作需要对返回结果类型(resultType / resultMap)进行相应的指定。
Mybatis 的 SQL 映射文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace=""> <select id="" resultType="" parameterMap="">
SQL 语句 ......
</select> </mapper>
MyBatis 的基本要素—SQL 映射文件的更多相关文章
- 初始MyBatis、SQL映射文件
MyBatis入门 1.MyBatis前身是iBatis,是Apache的一个开源项目,2010年这个项目迁移到了Google Code,改名为MyBatis,2013年迁移到GitHub.是一个基于 ...
- Mybatis sql映射文件浅析 Mybatis简介(三)
简介 除了配置相关之外,另一个核心就是SQL映射,MyBatis 的真正强大也在于它的映射语句. Mybatis创建了一套规则以XML为载体映射SQL 之前提到过,各项配置信息将Mybatis应用的整 ...
- Mybatis sql映射文件浅析 Mybatis简介(三) 简介
Mybatis sql映射文件浅析 Mybatis简介(三) 简介 除了配置相关之外,另一个核心就是SQL映射,MyBatis 的真正强大也在于它的映射语句. Mybatis创建了一套规则以XML ...
- MyBatis -- sql映射文件具体解释
MyBatis 真正的力量是在映射语句中. 和对等功能的jdbc来比价,映射文件节省非常多的代码量. MyBatis的构建就是聚焦于sql的. sql映射文件有例如以下几个顶级元素:(按顺序) cac ...
- MyBatis 创建核心配置文件和 SQL 映射文件
Mybatis 的两个配置文件(mybatis-config.xml 和 xxxMapper.xml)都为 xml 类型,因此在 eclipse 中创建 xml 文件命名为相应的 mybatis-c ...
- SSM - Mybatis SQL映射文件
MyBatis 真正的力量是在映射语句中.和对等功能的jdbc来比价,映射文件节省很多的代码量.MyBatis的构建就是聚焦于sql的. sql映射文件有如下几个顶级元素:(按顺序) cache配置给 ...
- Mybatis中的Mapper.xml映射文件sql查询接收多个参数
我们都知道,在Mybatis中的Mapper.xml映射文件可以定制动态SQL,在dao层定义的接口中定义的参数传到xml文件中之后,在查询之前mybatis会对其进行动态解析,通常使用#{}接收 ...
- Mybatis(二) SQL映射文件
SQL映射文件 单条件查询 1. 在UserMapper接口添加抽象方法 //根据用户名模糊查询 List<User> getUserListByName(); 2. 在UserMappe ...
- Mybatis SQL映射文件详解
Mybatis SQL映射文件详解 mybatis除了有全局配置文件,还有映射文件,在映射文件中可以编写以下的顶级元素标签: cache – 该命名空间的缓存配置. cache-ref – 引用其它命 ...
随机推荐
- FileStream StreamWriter StreamReader BinaryReader
FileStream vs/differences StreamWriter? http://stackoverflow.com/questions/4963667/filestream-vs-dif ...
- [翻译]NUnit--前言(一)
前言: 翻译这个系列主要是自己在学习NUnit之时看英文文档大部分能看懂但是有些还是功底不足,所以在方便自己以后再学习的时候可以快速查找,也能够加深印象以及掌握的更好.同时在搜索网上关于NUnit系列 ...
- POJ3709 K-Anonymous Sequence 斜率优化DP
POJ3709 题意很简单 给n个递增整数(n<=500000)和一种操作(选择任意个数 使他们减少整数值) 使得对于所有的整数 在数列中 有k个相等的数 O(n^2)的DP方程很容易得出 如下 ...
- Java IO 字节流与字符流 (二)
1. 什么是流 Java中的流是对字节序列的抽象,我们可以想象有一个水管,只不过现在流动在水管中的不再是水,而是字节序列.和水流一样,Java中的流也具有一个“流动的方向”,通常可以从中读入一个字节序 ...
- MySQL 操作语句
解释:|:或;{}:必选;[]:可选 创建数据库并指定字符编码: CREATE {DATABASE|SCHEMA} [IF NOT EXISTS] db_name [DEFAULT] CHARACTE ...
- [App Store Connect帮助]六、测试 Beta 版本(4.1) 管理 Beta 版构建版本:为构建版本添加测试员
在“TestFlight”部分中,您可以查看您所有 App 版本的构建版本,并深入查看构建版本的详细信息.您也可以为某个构建版本添加群组或独立测试员. 必要职能:“帐户持有人”职能.“管理”职能或“A ...
- Windows 使用之那些你还不知道操作
作者:你未读 整理:君未读 关于使用 win 系统的基本普及. 建议更换 win10 系统 可能很多朋友看到这个建议,心里很不爽,还很不服气,别急,且看官方给出的信息. 也就是说在 2019 年你完全 ...
- 【懒人专用系列】Xind2TestCase的初步探坑
公司最近说要弄Xind2TestCase,让我们组先试用一下 解释:https://testerhome.com/topics/17554 github项目:https://github.com/zh ...
- c++ isdigit函数
函数名:isdigit 函数所需头文件:#include<cstdio> 函数格式:isdigit(字符) 函数作用:判断括号内是否为1~9的数字. 例:isdigit(4) 就是true ...
- [转]微信开发.Net 接入示例
本文转自:http://my.oschina.net/lcak/blog/219618 微信公众平台接口开发官方仅提供了 PHP 接入示例代码, 网上找到的.Net代码多半需要积分下载, 所以自己写了 ...