SQL文件映射(mapper文件),几个顶级元素的配置:

mapper元素:根节点只有一个属性namespace(命名空间)作用:

1:用于区分不同的mapper,全局唯一。

2:绑定DAO接口,即面向接口编程。当namespace绑定某一接口之后,可以不用写该接口的实现类,MyBatis会通过接口的完全限定名来查找对应的mapper配置,执行SQL语句,因此namespa

ce的命名必须和接口名相同。

-----------------------------------------------------

namespace属性的要求:

1:namespace的命名必须和某个DAO接口同名,同属于DAO层,

故代码结构上,mapper映射文件个接口必须放在同一个包下。

2:在不同的mapper文件中,元素的id是可以相同的,MyBatis

是通过namespace和子元素的id联合区分的。接口中的方法和映射文件的SQL中的id一一对应。

-----------------------------------------------------

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

cache-ref:从其它命名空间引用缓存配置

reaultMap:用来描述数据库结果集和对象的对应关系

sql:可以重用的SQL块,也可以被其它语句引用

insert:映射插入语句

updata:映射更新语句

delete:映射删除语句

select:映射查询语句

resultMap的应用

resultType:直接表示返回类型

基础数据类型

复杂数据类型

resultMap:对外部resultMap的引用

应用场景

1:数据库的字段信息与属性不一致的情况

2:复杂的联表查询,可以自由地控制要展现的映射字段个数

==================================

其实返回的都是Map集合,当resultType返回user时候,MyBatis通过setter()方法自动进行关系映射赋值。返回resultMap时,则需要手动赋值,更自由。二者不能同时存在

==================================

设置resultMap的自动映射级别:

resultMap的自动映射匹配的前提:字段名和属性名一致

resultMap的自动映射级别:

属性: aotuMappingBehavior

值: PARTIAL(默认):自动匹配所有属性

NONE:关闭自动映射

resultMap的自动映射三个匹配级别:

1:NONE:禁止自动匹配

2:PARTIAL:(默认)自动匹配所有属性

有内部嵌套(collection,association)的除外

3:FULL:自动匹配所有

==================================

resultMap的基本配置项

resultMap的属性:

id:它是resultMap的唯一标识

type:java实体类

resultMap的子元素

id:对应数据库中该行的主键id,设置此项可提高MyBatis的性能

result:映射到javaBean的某个简单类型属性

property: 映射数据库列的实体对象的属性

column:数据库列名或者别名

association:映射到javaBean的某个复杂类型属性如javaBean

1: 复杂的类型关联,一对一(一个实体类嵌套另一个实

体类属性)

2:内部嵌套:映射一个嵌套javaBean属性

3:属性:

a:property: 映射数据库列的实体对象的属性

b:javaType:完整java类名或者别名

c:resultMap:应用外部的resultMap

4:子元素

id:同resultMap的id一样对应该javaBean表的主键

result:

property: 映射数据库列的实体对象的属性

column:数据库列名或者别名

collection:映射到javaBean的某个复杂类型属性,例如集合

1:复杂类型集合,一对多(一个实体类嵌套另一个实体类集合)

2:内部嵌套:映射一个嵌套结果集到一个列表

3:属性

property:映射数据库列的实体对象的属性

ofType : 完整的java类名或者别名(集合所包含的类型)

resultMap : 应用外部的resultMap,代码重用

4:子元素

id:同resultMap的id一样对应该javaBean表的主键

result:

property: 映射数据库列的实体对象的属性

column:数据库列名或者别名

使用select完成单条件查询

select标签:及其属性:

1:id:命名空间的唯一标识符,与接口中的方法名相对应

2:parameterType:传入的SQL语句的参数类型的限定名或别名

基础数据类型:int String Date等, 只能传入一个,通过#{参数名}来获取传入值

复杂数据类型:java实体类,Map集合通过#{属性名}或#{Map的Key}获取传入值

3:resultType:SQL语句的返回值的完整类名或别名

2,3都支持内建的别名,大小写不区分。可以参考P37别名表#{userName}:userName和接口方法中传入的参数名是一样的

a:单参数入参

b:多参数之javaBean对象入参

C:多参数之Map集合入参

使用insert完成增加操作

insert标签及其属性:

1:id:命名空间的唯一标识符,与接口中的方法名相对应

2:parameterType:传入的SQL语句的参数类型的限定名或别名

关于增删改的返回类型:

1:默认返回影响的行数,所以接口方法中的返回值类型要设置为int类型最好不要返回boolean。

2:insert,update,delete元素是没有返回属性resultType只有查询操作select才有相应的指定。

使用update完成增加操作

insert标签及其属性:

1:id:命名空间的唯一标识符,与接口中的方法名相对应

2:parameterType:传入的SQL语句的参数类型的限定名或别名

1:对象入参

同insert用法相同,没有set赋值的属性,在表中为NULL显示,因此用参数入参可以解决此问题

2:参数入参,不写入参类型

1:接口方法入参要使用注解

2 : 映射SQL中用#{注解名}来获取参数值

附:超过4个参数最好封装为对象入参,多参入参,不写入参类型 参数固定的,最好直接多参数入参.int类型的入参都要使用包装类.

DAO层接口的常见的返回类型

复杂数据类型:1:JAVA对象 2:Map集合 3:List集合

int类型:增删改更新操作,返回影响的行数

MyBatis参数的入参:

1:使用注解进行参数的传递

2:封装成对象入参

使用delete完成删除操作

insert标签及其属性:

1:id:命名空间的唯一标识符,与接口中的方法名相对应

2:parameterType:传入的SQL语句的参数类型的限定名或别名

MyBatis的缓存

1:一级缓存

2:二级缓存

-----------------------------

二级缓存的配置:

1:MyBatis的全局cache配置

2:在Mapper XML文件中设置缓存,默认情况下:未开启

3:在Mapper XML文件配置支持cache后,需要对个别查询做调

整可以单独设置cache。

<select id="selectALL" resultType="Emp" useCache="true">

----------------------------------

实际上,MyBatis的缓存很少用到,当面对一定规模的数据量时,内置的cache方式也派不上用场,我们一般会选择OS cache,mamer cache等专

门的缓存服务器来做。因此,MyBatis专心做的还是SQL映射!

MyBatis—mapper.xml映射配置的更多相关文章

  1. mybatis mapper xml文件配置resultmap时,id行和result行有什么区别?

    mybatis mapper xml文件配置resultmap时,id行和result行有什么区别? <resultMap id = "CashInvoiceMap" typ ...

  2. mybatis Mapper XML 映射文件

    传送门:mybatis官方文档 Mapper XML 文件详解 一. 数据查询语句 1. select <select id="selectPerson" parameter ...

  3. Mybatis学习--Mapper.xml映射文件

    简介 Mapper.xml映射文件中定义了操作数据库的sql,每个sql是一个statement,映射文件是mybatis的核心. 映射文件中有很多属性,常用的就是parameterType(输入类型 ...

  4. mybatis.xml和mapper.xml的配置

    mybatis.xml和mapper.xml的配置 1.创建一个Source Folder 2.完成分包mapper和mybatis 3.创建mybatis.xml文档 4xml文档名 5.名字规范 ...

  5. Mybatis中的Mapper.xml映射文件sql查询接收多个参数

    ​ 我们都知道,在Mybatis中的Mapper.xml映射文件可以定制动态SQL,在dao层定义的接口中定义的参数传到xml文件中之后,在查询之前mybatis会对其进行动态解析,通常使用#{}接收 ...

  6. MyBatis Mapper XML 详解

    MyBatis Mapper XML 详解 MyBatis 真正的力量是在映射语句中.这里是奇迹发生的地方.对于所有的力量,SQL 映射的 XML 文件是相当的简单.当然如果你将它们和对等功能的 JD ...

  7. mybatis mapper.xml 配置文件问题(有的错误xml是不报的) 导致服务无法启动 。

    转载自 开源编程 一舟mybatsi xml编译报错,tomcat启动一直循环,导致内存溢出,启动失败 mapper.xml怎么知道有没有编译错误,哪个位置有错误 这应该是mybatis的一个bug, ...

  8. mybatis mapper xml文件的导入方式和查询方式

    mybatis mapper xml文件的导入方式和查询方式 ssm框架 Mybatis  mapper与SQLSession的关系 每个基于MyBatis的应用都是以一个SqlSessionFact ...

  9. mybatis Mapper.xml和Mapper.java

    mybatis Mapper.xml和Mapper.java 通过Mapper.xml和Mapper.java来实现mybatis.环境和入门的一样的.关键:Mapper.xml + Mapper.j ...

随机推荐

  1. sublime常用插件及配置

      以下是我的sublime插件列表: Side​Bar​Enhancements增强版侧边栏 这个插件官方不支持通过package安装了,只能手动了,下载地址https://github.com/S ...

  2. 如何在HTML中播放flash

    随着html的风靡,改变了之前前端的许多条条框框,而video的出现使flash仿佛都要退出历史的舞台了,但是h5也会出现以下局限性,比如说,在一些不支持h5的浏览器上,此处省略一万只草泥马..... ...

  3. PHP MySQL Insert Into

    INSERT INTO 语句用于向数据库表中插入新记录. 向数据库表插入数据 INSERT INTO 语句用于向数据库表添加新记录. 语法 INSERT INTO table_name VALUES ...

  4. 旅游吧!我在这里 ——旅游相册POI搜索:找回你的足迹

    版权声明:本文由林少彬原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/89 来源:腾云阁 https://www.qclou ...

  5. js的声明提前

    由于js声明提前的作用,所以在js中后面定义的函数也可以再前面使用. 不过,项目中看到过这样的写法 var a = function(){}, b = function(){}; 这种写法使代码看上去 ...

  6. 【BZOJ4545】DQS的trie 后缀自动机+LCT

    [BZOJ4545]DQS的trie Description DQS的自家阳台上种着一棵颗粒饱满.颜色纯正的trie. DQS的trie非常的奇特,它初始有n0个节点,n0-1条边,每条边上有一个字符 ...

  7. c# 执行 CreateHandle() 时无法调用值 Dispose()

    在多线程C#开发中,遇到错误 执行 CreateHandle() 时无法调用值 Dispose().,这个错误是在关闭窗体的时候出来的. 原因是因为窗体还存在CreateHandle()事件,所以还不 ...

  8. tpcc-mysql安装、使用、结果解读

    请点击:http://www.aikaiyuan.com/8687.html 错误处理: ln -s /usr/local/mysql/lib/libmysqlclient.so. /usr/lib6 ...

  9. 微信小程序 --- action-sheet底部弹框

    action-sheet:从屏幕底部弹出一个菜单,选择: 使用的时候,在给不同的 action-sheet-item 添加不同的事件. 效果: (这里的确定可以有多个) 代码: <button ...

  10. mysql 内连接原理