MyBatis—mapper.xml映射配置
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映射配置的更多相关文章
- mybatis mapper xml文件配置resultmap时,id行和result行有什么区别?
mybatis mapper xml文件配置resultmap时,id行和result行有什么区别? <resultMap id = "CashInvoiceMap" typ ...
- mybatis Mapper XML 映射文件
传送门:mybatis官方文档 Mapper XML 文件详解 一. 数据查询语句 1. select <select id="selectPerson" parameter ...
- Mybatis学习--Mapper.xml映射文件
简介 Mapper.xml映射文件中定义了操作数据库的sql,每个sql是一个statement,映射文件是mybatis的核心. 映射文件中有很多属性,常用的就是parameterType(输入类型 ...
- mybatis.xml和mapper.xml的配置
mybatis.xml和mapper.xml的配置 1.创建一个Source Folder 2.完成分包mapper和mybatis 3.创建mybatis.xml文档 4xml文档名 5.名字规范 ...
- Mybatis中的Mapper.xml映射文件sql查询接收多个参数
我们都知道,在Mybatis中的Mapper.xml映射文件可以定制动态SQL,在dao层定义的接口中定义的参数传到xml文件中之后,在查询之前mybatis会对其进行动态解析,通常使用#{}接收 ...
- MyBatis Mapper XML 详解
MyBatis Mapper XML 详解 MyBatis 真正的力量是在映射语句中.这里是奇迹发生的地方.对于所有的力量,SQL 映射的 XML 文件是相当的简单.当然如果你将它们和对等功能的 JD ...
- mybatis mapper.xml 配置文件问题(有的错误xml是不报的) 导致服务无法启动 。
转载自 开源编程 一舟mybatsi xml编译报错,tomcat启动一直循环,导致内存溢出,启动失败 mapper.xml怎么知道有没有编译错误,哪个位置有错误 这应该是mybatis的一个bug, ...
- mybatis mapper xml文件的导入方式和查询方式
mybatis mapper xml文件的导入方式和查询方式 ssm框架 Mybatis mapper与SQLSession的关系 每个基于MyBatis的应用都是以一个SqlSessionFact ...
- mybatis Mapper.xml和Mapper.java
mybatis Mapper.xml和Mapper.java 通过Mapper.xml和Mapper.java来实现mybatis.环境和入门的一样的.关键:Mapper.xml + Mapper.j ...
随机推荐
- Java精选笔记_JSP开发模型
JSP开发模型 JSP Model JSP Model1简单轻便,适合小型Web项目的快速开发. JSP Model2模型是在JSP Model1的基础上提出的,它提供了更清晰的代码分层,更适用于多人 ...
- Swift-基础语法之变量&常量&元组
使用 let来声明一个常量,用 var来声明一个变量.常量的值在编译时并不要求已知,但是你必须为其赋值一次.这意味着你可以使用常量来给一个值命名,然后一次定义多次使用 myVariable = let ...
- Python 使用正则表达式匹配URL网址
使用正则表达式匹配以 .com 或 .cn 为域名后缀的URL地址 In [1]: import re In [2]: str = "http://www.baidu.com/" ...
- 如何在单片机上使用printf函数(printf)(avr)(stm)(lpc)(单片机)(转)
摘要: 当我们在调试代码时,通常需要将程序中的某个变量打印至PC机上,来判断我们的程序是否按预期的运行,printf函数很好的做到了这一点,它能直接以字符的方式输出变量名和变量的值,printf ...
- cocos2d-x游戏引擎核心之四——动作调度机制
一.动作机制的用法 在深入学习动作机制在 Cocos2d-x 里是如何实现的之前,我们先来学习整套动作机制的用法,先知道怎么用,再深入学习它如何实现,是一个很好很重要的学习方法. (1)基本概念 CC ...
- git Xcode
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://2009315319.blog.51cto.com/701759/1158515 ...
- 小游戏——js+h5[canvas]+cs3制作【五子棋】小游戏
五子棋小游戏学习—— 有一个问题是,棋盘线的颜色,在canvas中,明明设置了灰色,但在我的预览中还是黑色的,很重的颜色. 以下是复刻的源码: <!DOCTYPE html> <ht ...
- nohop以及后台运行的相关集合
本文参考:https://blog.csdn.net/u011095110/article/details/78666833 1. 后台运行一个命令: & tar -czvf /mnt/aa. ...
- 安装Hadoop系列 — 安装SSH免密码登录
配置ssh免密码登录 1) 验证是否安装ssh:ssh -version显示如下的话则成功安装了OpenSSH_6.2p2 Ubuntu-6ubuntu0.1, OpenSSL 1.0.1e 11 ...
- Xcode - 插件管理工具Alcatraz
Alcatraz 1.简介 Alcatraz是一个能帮你管理Xcode插件丶模版及颜色配置的工具.它可以直接集成在Xcode的图形界面中,让你感觉就像在使用Xcode自带的功能一样. 2.安装和删除 ...