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=”10000” 这个设置驱动程序等待数据库返回请求结果,并抛出异常时间的最大等待值。默认不设置(驱动自行处理)。 fetchSize=”256” 这是暗示驱动程序每次批量返回的结果行数。默认不设置(驱动自行处理)。
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="20000" 这个设置驱动程序等待数据库返回请求结果,并抛出异常时间的最大等待值。 默认不设置(驱动自行处理)。
>

以下就是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>

兴许将会具体介绍缓存和resultMap

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. SSM - Mybatis SQL映射文件

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

  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. MyBatis学习-映射文件标签篇(select、resultMap)

    MyBatis 真正的核心在映射文件中.比直接使用 JDBC 节省95%的代码.而且将 SQL 语句独立在 Java 代码之外,可以进行更为细致的 SQL 优化. 一. 映射文件的顶级元素 selec ...

随机推荐

  1. docker guide

    centos docker community version install: yum -y install docker # install docker systemctl start dock ...

  2. 洛谷 P3146 248 题解

    https://www.luogu.org/problemnew/show/P3146 区间dp,这次设计的状态和一般的有一定的差异. 这次我们定义$dp[i][j]$表示$[i,j]$的可以合并出来 ...

  3. Ubuntu下压缩与解压各种文件的命令

    1.压缩与解压xz文件 (1)压缩 xz -z  filename (2)解压 xz -d  filename.xz 2.压缩与解压tar文件 (1)压缩 tar -cvf  filename(压缩到 ...

  4. Python旅途——简单语法

    1. 前言 在我们对环境以及pycharm安装好之后,我们就可以开始我们的Python之旅了,那么,我们学习一门语言应该如何开始呢?就像我们学习汉语一样,从abcd这些拼音学起,而对于我们Python ...

  5. (十六)python 3 全局变量局部变量

    全局变量和局部变量 全局变量与局部变量两者的本质区别就是在于作用域. 用通俗的话来理解的话,全局变量是在整个py文件中声明,全局范围内都可以访问.局部变量是在某个函数中声明的,只能在该函数中调用它,如 ...

  6. Python爬虫-Scrapy-CrawlSpider与ItemLoader

    一.CrawlSpider 根据官方文档可以了解到, 虽然对于特定的网页来说不一定是最好的选择, 但是 CrwalSpider 是爬取规整的网页时最常用的 spider, 而且有很好的可塑性. 除了继 ...

  7. 2019年,Python工程师必考的6个面试题,Python面试题No5

    第1题:Python里面如何实现tuple和list的转换? 函数tuple(seq)可以把所有可迭代的(iterable)序列转换成一个tuple, 元素不变,排序也不变 list转为tuple: ...

  8. POJ 2631 Roads in the North (求树的直径)

    Description Building and maintaining roads among communities in the far North is an expensive busine ...

  9. 【HIHOCODER 1320】压缩字符串(区间DP)

    描述 小Hi希望压缩一个只包含大写字母'A'-'Z'的字符串.他使用的方法是:如果某个子串 S 连续出现了 X 次,就用'X(S)'来表示.例如AAAAAAAAAABABABCCD可以用10(A)2( ...

  10. 一道在CF上WA了9次才AC的A题题目与10个版本的代码代码

    题目(题目链接:https://codeforces.com/problemset/problem/733/A):   A. Grasshopper And the String time limit ...