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映射文件的更多相关文章

  1. 初始MyBatis、SQL映射文件

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

  2. 二:SQL映射文件

    二:SQL映射文件 1.SQL映射文件: (1)mapper:映射文件的根元素节点,只有一个属性namespace(命名空间) 作用:用于区分不同的mapper全局唯一 绑定dao接口即面向接口编程, ...

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

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

  4. 了解一下SQL映射文件

    1:SQL映射文件 MyBatis真正强大之处就在于SQL映射语句,相对于强大的功能,SQL映射文件的配置非常简单,与JDBC相比减少了50%的代码.下面是关于SQL映射文件的几个顶级元素配置 map ...

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

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

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

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

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

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

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

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

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

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

随机推荐

  1. RocEDU.阅读.写作《苏菲的世界》书摘(二)

    "迷信",多么奇怪的一个名词.如果你信基督教或伊斯兰教,这就叫"信仰",但如果你相信占星术或十三号星期五不吉利,就是迷信.谁有权利说别人相信的东西就是" ...

  2. Swift进阶之路(一)——单例模式、属性传值、代理传值、闭包传值

    一.单例模式 单例模式是设计模式中最简单的一种,甚至有些模式大师都不称其为模式,称其为一种实现技巧,因为设计模式讲究对象之间的关系的抽象,而单例模式只有自己一个对象. 关于单例,有三个重要的准则需要牢 ...

  3. 【转载】JExcelApi(JXL)学习笔记

    在公司的项目中,有excel生成.导出的需求,因此学习了用JXL读写excel,做个简单的笔记,以供参考.      实现用java操作excel的工具,一般用的有两个:一个是JXL,另一个是apac ...

  4. DispatcherServlet讲解

    1.1.1.DispatcherServlet作用DispatcherServlet是前端控制器设计模式的实现,提供Spring Web MVC的集中访问点,而且负责职责的分派,而且与Spring I ...

  5. POJ-2418 Hardwood Species(二叉搜索树)

    思路就是先将每个单词存进二叉树中,没出现一次,修改该单词所在结点的cnt++: 最后通过递归中序遍历输出结果. 思路很清晰,主要注意一下指针的使用,想一想为什么要这么用? 简单的解释就是,insert ...

  6. KindEditor ctrl+v添加图片功能

    原理: 监听粘贴事件(paste) 获取粘贴版数据,读取到图片数据流进行加载base64 传到后台服务端直接输出为图片文件保存后返回图片读取路径插入编辑器中 /** * 获取编辑器对象 */ wind ...

  7. SQL 循环 FOR 语句

    ) DECLARE My_Cursor CURSOR --定义游标 FOR (SELECT userid FROM User) --查出需要的集合放到游标中 OPEN My_Cursor; --打开游 ...

  8. DataTable扩展:转化实体ToList

    直接上代码: 根据属性进行映射:DataTable转化成实体List public static class DataTableExtension { public static List<T& ...

  9. Angular如何给动态生成的元素绑定事件

    在AngularJS中,操作DOM一般在指令中完成,事件监听机制是在对于已经静态生成的dom绑定事件,而如果在指令中动态生成了DOM节点,动态生成的节点不会被JS事件监听. 举例来说: angular ...

  10. [PostgreSql]PostgreSql创建函数及函数的执行

    1.准备好创建函数的脚本 -- FUNCTION: public.dynamic_placelist_select(integer, timestamp without time zone) -- D ...