SQL映射文件
SQL映射文件的几个顶级元素
mapper - namespace
cache - 配置给定命名空间的缓存
cache-ref – 从其他命名空间引用缓存配置
resultMap –用来描述数据库结果集和对象的对应关系
sql – 可以重用的SQL块,也可以被其他语句引用
insert – 映射插入语句
update – 映射更新语句
delete – 映射删除语句
select – 映射查询语句
注意:按照定义的顺序
mapper
namespace:命名空间.(dtd)
namespace和子元素的id联合保证唯一,区别不同的mapper
注意:
namespace的命名必须跟某个接口同名
接口中的方法与映射文件中SQL语句id一一对应
select
a.查询语句的标签
b.常用属性
id
命名空间中唯一的标识符
接口中的方法与映射文件中的SQL语句id一一对应
parameterType
传入SQL语句的参数类型
resultType
SQL语句返回值类型的完整类名或别名
c. parameterType
基础数据类型
int、String、Date等
只能传入一个,通过#{参数名}即可获取传入的值
复杂数据类型
Java实体类、Map等
通过#{属性名}或者#{map的keyName}即可获取传入值
注意:#{}和${}的区别
${}是原样输出.(可以导致sql注入)
#{}是会给值加入一对双引号.'value'.(建议适用这个)
d. resultMap
<resultMap type="数据类型" id="id">
<result property="d性名" column="数据库列名"/>
<result property="userCode" column="userCode"/>
</resultMap>
注意:resultType和resultMap的区别
resultType :直接表示返回类型
基本数据类型
复杂数据类型
resultMap :对外部resultMap的引用
应用场景:
数据库字段信息与对象属性不一致
复杂的联合查询,自由控制映射结果
e.resultMap的自动映射
前提:字段名与属性名一致
设置级别autoMappingBehavior:
NONE : 禁止映射
PARTIAL:自动匹配所有(没有嵌套association,collection)
FULL: 自动匹配所有.
例:<setting name="autoMappingBehavior" value="FULL"/>
f.属性
id 在命名空间中唯一的标识符,可以被用来引用这条语句
parameterType 将会传入这条语句的参数类的完全限定名或别名
resultType 从这条语句中返回的期望类型的类的完全限定名或别名。注意集合情形,那应该是集合可以包含的类型,而不能是集合本身。使用resultType或resultMap,但不能同时使用
resultMap 命名引用外部的resultMap
flushCache 将其设置为true,不论语句什么时候被调用,都会导致缓存被清空。默认值:false
useCache 将其设置为true,将会导致本条语句的结果被缓存。默认值:true
timeout 这个设置驱动程序等待数据库返回请求结果,并抛出异常时间的最大等待值。默认不设置(驱动自行处理)
fetchSize 这是暗示驱动程序每次批量返回的结果行数
statementType STATEMENT,PREPARED或CALLABLE的一种。让MyBatis选择使用Statement,PreparedStatement或CallableStatement。默认值:PREPARED
resultSetType FORWARD_ONLY|SCROLL_SENSITIVE|SCROLL_INSENSITIVE中的一种。默认是不设置(驱动自行处理)
insert(增加)
id
parameterType
例:
<insert id="add" parameterType="User" >
insert into smbms_user (userCode,userName,userPassword)
values ( #{userCode},#{userName},#{userPassword})
</insert>
注意:insert、update、delete元素均没有resultType属性
默认返回int类型.
update
例:
<update id ="modify" parameterType="User">
update smbms_user
set userCode = #{userCode},
userName = #{userName},
userPassword = #{userPassword}
where id = #{id}
</update>
delete
例:
<delete id ="deleteUserById" parameterType="int">
delete from smbms_user where id = #{id}
</delete>
SQL映射文件的更多相关文章
- 初始MyBatis、SQL映射文件
MyBatis入门 1.MyBatis前身是iBatis,是Apache的一个开源项目,2010年这个项目迁移到了Google Code,改名为MyBatis,2013年迁移到GitHub.是一个基于 ...
- 二:SQL映射文件
二:SQL映射文件 1.SQL映射文件: (1)mapper:映射文件的根元素节点,只有一个属性namespace(命名空间) 作用:用于区分不同的mapper全局唯一 绑定dao接口即面向接口编程, ...
- Mybatis sql映射文件浅析 Mybatis简介(三)
简介 除了配置相关之外,另一个核心就是SQL映射,MyBatis 的真正强大也在于它的映射语句. Mybatis创建了一套规则以XML为载体映射SQL 之前提到过,各项配置信息将Mybatis应用的整 ...
- 了解一下SQL映射文件
1:SQL映射文件 MyBatis真正强大之处就在于SQL映射语句,相对于强大的功能,SQL映射文件的配置非常简单,与JDBC相比减少了50%的代码.下面是关于SQL映射文件的几个顶级元素配置 map ...
- Mybatis sql映射文件浅析 Mybatis简介(三) 简介
Mybatis sql映射文件浅析 Mybatis简介(三) 简介 除了配置相关之外,另一个核心就是SQL映射,MyBatis 的真正强大也在于它的映射语句. Mybatis创建了一套规则以XML ...
- SQL映射文件-----MySQL关系映射【1对1,1对多,多对多】
SSM框架下,mapper.xml 中 association 标签和 collection 标签的使用 当数据库中表与表之间有关联时,在对数据库进行操作时,就不只是针对某一张表了,需要联表查询 My ...
- MyBatis -- sql映射文件具体解释
MyBatis 真正的力量是在映射语句中. 和对等功能的jdbc来比价,映射文件节省非常多的代码量. MyBatis的构建就是聚焦于sql的. sql映射文件有例如以下几个顶级元素:(按顺序) cac ...
- MyBatis 创建核心配置文件和 SQL 映射文件
Mybatis 的两个配置文件(mybatis-config.xml 和 xxxMapper.xml)都为 xml 类型,因此在 eclipse 中创建 xml 文件命名为相应的 mybatis-c ...
- MyBatis 的基本要素—SQL 映射文件
MyBatis 真正的强大在于映射语句,相对于它强大的功能,SQL 映射文件的配置却是相当简单.对比 SQL 映射配置和 JDBC 代码,发现使用 SQL 映射文件配置可减少 50% 以上的代码,并且 ...
随机推荐
- web.py url传参及获取
第一种:直接获取: import web urls = ( '/(.*)','index' #URL后面必须加(.*) ) class index: def GET(self,name): print ...
- linux-android(任务处理)
1.开辟任务内存 2.设置每个任务优先级 ,,
- SVN添加忽略目录
项目:Thinkphp 目录结构: Thinkphp |-- Common |-- Runtime |-- Home 忽略目标: Runtime 文件夹及下面所有文件 首先,需要忽略的目录必须没有加入 ...
- bzoj 3657 斐波那契数列(fib.cpp/pas/c/in/out)
空间 512M 时限2s [题目描述] 有n个大于1的正整数a1,a2,…,an,我们知道斐波那契数列的递推式是f(i)=f(i-1)+f(i-2),现在我们修改这个递推式变为f(i)=f(i-1) ...
- 从U盘安装linux(前人踩坑后人乘凉)
今天踩了一个大坑,网上的教程从u盘安装linux少了一个关键步骤导致我挣扎了两个小时 废话不多说,开始需要准备一些东西 1.从官网下载一个Ubuntu 10.04的镜像 2.一个大于等于1G的支持启动 ...
- HDU 3594 Cactus(仙人掌问题)
http://acm.hdu.edu.cn/showproblem.php?pid=3594 题意: 一个有向图,判断是否强连通和每条边只在一个环中. 思路: 仙人掌问题. 用Tarjan算法判断强连 ...
- Entity Framework 基于Oracle的code first 问题汇总
1. 在code first 在数据库中建表时,需要指定schema, 默认是dbo, 需要改成我们的oracle登录名 protected override void OnModelCreating ...
- java高级特性(4)--枚举
枚举(enum),是指一个经过排序的.被打包成一个单一实体的项列表.一个枚举的实例可以使用枚举项列表中任意单一项的值.枚举在各个语言当中都有着广泛的应用,通常用来表示诸如颜色.方式.类别.状态等等数目 ...
- bzoj 1192 鬼谷子的钱袋 数学
1192: [HNOI2006]鬼谷子的钱袋 Time Limit: 10 Sec Memory Limit: 162 MB Description 鬼谷子非常聪明,正因为这样,他非常繁忙,经常有各 ...
- web项目整合Shiro框架
1.修改pom.xml文件 <dependency> <groupId>org.apache.shiro</groupId> <artifactId>s ...