MyBatis 真正的力量是在映射语句中。和对等功能的jdbc来比价,映射文件节省很多的代码量。MyBatis的构建就是聚焦于sql的。

sql映射文件有如下几个顶级元素:(按顺序)

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

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

resultMap最复杂,也是最有力量的元素,用来描述如何从数据库结果集中来加载你的对象。

parameterMap已经被废弃了!老式风格的参数映射。内联参数是首选,这个元素可能在将来被移除。

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

insert映射插入语句。

update映射更新语句。

delete映射删除语句。

select映射查询语句。

下面就详细描述一些元素:

1、select

查询语句是使用 MyBatis 时最常用的元素之一。

<select id=”selectPerson” parameterType=”int” resultType=”hashmap”>
SELECT * FROM PERSON WHERE ID = #{id}
</select>

使用一个int(或Integer)类型的参数,并返回一个HashMap类型的对象,其中的键是列名,值是列对应的值。

#{id}

select 元素有很多属性允许你配置,来决定每条语句的作用细节。

<select
id=”selectPerson” 在命名空间中唯一的标识符,可以被用来引用这条语句。
parameterType=”int” 将会传入这条语句的参数类的完全限定名或别名。
parameterMap=”deprecated” (已废弃)
resultType=”hashmap” 从这条语句中返回的期望类型的类的完全限定名或别名。注意集合情形,那应该是集合可以包含的类型,而不能是集合本身。使用resultType或resultMap,但不能同时使用。
resultMap=”personResultMap” 命名引用外部的resultMap。返回map是MyBatis最具力量的特性,对其有一个很好的理解的话,许多复杂映射的情形就能被解决了。使用 resultMap 或 resultType,但不能同时使用。
flushCache=”false” 将其设置为true,不论语句什么时候被调用,都会导致缓存被清空。默认值: false。
useCache=”true” 将其设置为 true,将会导致本条语句的结果被缓存。默认值: true。
timeout=”” 这个设置驱动程序等待数据库返回请求结果,并抛出异常时间的最大等待值。默认不设置(驱动自行处理)。
fetchSize=”” 这是暗示驱动程序每次批量返回的结果行数。默认不设置(驱动自行处理)。
statementType=”PREPARED” STATEMENT,PREPARED 或 CALLABLE 的一种。这会让 MyBatis使用选择使用 Statement, PreparedStatement 或 CallableStatement。默认值: PREPARED。
resultSetType=”FORWARD_ONLY” FORWARD_ONLY|SCROLL_SENSITIVE|SCROLL_INSENSITIVE中的一种。默认是不设置(驱动自行处理)。 >

2、insert, update, delete
数据变更语句 insert, update 和 delete 在它们的实现中非常相似:

<insert
id="insertAuthor" 在命名空间中唯一的标识符,可以被用来引用这条语句。
parameterType="domain.blog.Author" 将会传入这条语句的参数类的完全限定名或别名。
flushCache="true" 将其设置为 true,不论语句什么时候被调用,都会导致缓存被清
空。默认值: false。
statementType="PREPARED" STATEMENT,PREPARED 或 CALLABLE 的一种。这会让 MyBatis使用选择使用 Statement, PreparedStatement 或CallableStatement。默认值: PREPARED。
keyProperty="" (仅对 insert有用)标记一个属性, MyBatis 会通过 getGeneratedKeys或者通过 insert 语句的 selectKey 子元素设置它的值。默认:不设置。
useGeneratedKeys="" ( 仅 对 insert 有 用 ) 这 会 告 诉 MyBatis 使 用 JDBC 的getGeneratedKeys 方法来取出由数据(比如:像 MySQL 和 SQLServer 这样的数据库管理系统的自动递增字段)内部生成的主键。默认值: false。
timeout="" 这个设置驱动程序等待数据库返回请求结果,并抛出异常时间的最大等待值。默认不设置(驱动自行处理)。 >

下面就是insert, update 和 delete 语句的示例:

<insert id="insertAuthor" parameterType="domain.blog.Author">
insert into Author (id,username,password,email,bio) values (#{id},#{username},#{password},#{email},#{bio})
</insert> <update id="updateAuthor" parameterType="domain.blog.Author">
update Author set
username = #{username},
password = #{password},
email = #{email},
bio = #{bio}
where id = #{id}
</update> <delete id="deleteAuthor” parameterType="int">
delete from Author where id = #{id}
</delete>

如前所述,插入语句有一点多,它有一些属性和子元素用来处理主键的生成。首先,如果你的数据库支持自动生成主键的字段(比如MySQL和SQLServer),那么你可以设置 useGeneratedKeys=”true”,而且设置 keyProperty 到你已经做好的目标属性上。例如,如果上面的 Author 表已经对 id 使用了自动生成的列类型,那么语句可以修改为:

<insert id="insertAuthor" parameterType="domain.blog.Author"
useGeneratedKeys=”true” keyProperty=”id”>
insert into Author (username,password,email,bio)
values (#{username},#{password},#{email},#{bio})
</insert>

3、sql   --> 这个元素可以被用来定义可重用的SQL代码段,可以包含在其他语句中。

<select id=”selectUsers” parameterType=”int” resultType=”hashmap”>
select <include refid=”userColumns”/>
from some_table
where id = #{id}
</select>

SSM - Mybatis SQL映射文件的更多相关文章

  1. Mybatis sql映射文件浅析 Mybatis简介(三)

    简介 除了配置相关之外,另一个核心就是SQL映射,MyBatis 的真正强大也在于它的映射语句. Mybatis创建了一套规则以XML为载体映射SQL 之前提到过,各项配置信息将Mybatis应用的整 ...

  2. Mybatis sql映射文件浅析 Mybatis简介(三) 简介

    Mybatis sql映射文件浅析 Mybatis简介(三)   简介 除了配置相关之外,另一个核心就是SQL映射,MyBatis 的真正强大也在于它的映射语句. Mybatis创建了一套规则以XML ...

  3. Mybatis SQL映射文件详解

    Mybatis SQL映射文件详解 mybatis除了有全局配置文件,还有映射文件,在映射文件中可以编写以下的顶级元素标签: cache – 该命名空间的缓存配置. cache-ref – 引用其它命 ...

  4. MyBatis -- sql映射文件具体解释

    MyBatis 真正的力量是在映射语句中. 和对等功能的jdbc来比价,映射文件节省非常多的代码量. MyBatis的构建就是聚焦于sql的. sql映射文件有例如以下几个顶级元素:(按顺序) cac ...

  5. 初始MyBatis、SQL映射文件

    MyBatis入门 1.MyBatis前身是iBatis,是Apache的一个开源项目,2010年这个项目迁移到了Google Code,改名为MyBatis,2013年迁移到GitHub.是一个基于 ...

  6. MyBatis 创建核心配置文件和 SQL 映射文件

    Mybatis 的两个配置文件(mybatis-config.xml  和 xxxMapper.xml)都为 xml 类型,因此在 eclipse 中创建 xml 文件命名为相应的 mybatis-c ...

  7. MyBatis 的基本要素—SQL 映射文件

    MyBatis 真正的强大在于映射语句,相对于它强大的功能,SQL 映射文件的配置却是相当简单.对比 SQL 映射配置和 JDBC 代码,发现使用 SQL 映射文件配置可减少 50% 以上的代码,并且 ...

  8. Mybatis(二) SQL映射文件

    SQL映射文件 单条件查询 1. 在UserMapper接口添加抽象方法 //根据用户名模糊查询 List<User> getUserListByName(); 2. 在UserMappe ...

  9. SQL映射文件-----MySQL关系映射【1对1,1对多,多对多】

    SSM框架下,mapper.xml 中 association 标签和 collection 标签的使用 当数据库中表与表之间有关联时,在对数据库进行操作时,就不只是针对某一张表了,需要联表查询 My ...

随机推荐

  1. CodeSmith使用SQLite Provider找不到请求的 .Net Framework 数据提供程序

    关于CodeSmith5使用SQLite Provider时的报错:System.BadImageFormatException: 未能加载文件或程序集“System.Data.SQLite,.... ...

  2. F4帮助

    在INITIALIZATION之后添加 AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_month-low 事件,s_month-low为要添加的搜索帮助. 下面 ...

  3. 关于CORS 应该注意的几点

    前言 对于跨域,随着w3c的CORS的出现,相比较于有些年头的jsonp,CORS以其简单安全,支持post的优势越来越收到大家的欢迎.具体如何CORS的原理和实现,直接推荐阮老师的文章,十分详细.本 ...

  4. Scala 学习之路(七)—— 常用集合类型之 Map & Tuple

    一.映射(Map) 1.1 构造Map // 初始化一个空map val scores01 = new HashMap[String, Int] // 从指定的值初始化Map(方式一) val sco ...

  5. 【搬家啦】2019年06月20日csdn难民来报道啦~

    原博地址:https://blog.csdn.net/the_fool_

  6. Mac下安装redis5.0 与命令

    参考链接:https://blog.csdn.net/zyp1376308302/article/details/84257606 参开链接2:https://www.cnblogs.com/guan ...

  7. composer使用本地仓库

    { "repositories": { "sms": { "type": "path", "url" ...

  8. 深入V8引擎-AST(4)

    (再声明一下,为了简单暴力的讲解AST的转换过程,这里的编译内容以"'Hello' + ' World'"作为案例) 上一篇基本上花了一整篇讲完了scanner的Init方法,接下 ...

  9. python的自定义函数

    今天想把上次参考着网上教程写的scrapy爬虫改写成requests和beautifulsoup的普通爬虫,写着写着发现自己对python的自定义函数还不是太熟悉(自己TCL了.........流泪) ...

  10. CSU 1508:地图的四着色(DFS+剪枝)

    http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1508 题意:地图中四联通的块是一个国家,A和B每个人可以涂两种颜色,且B不能涂超过5次,相邻的国家 ...