一、resultMap[结果映射  关系映射]

作用:当查询的数据与数据库中的数据不一致(表中字段和实体的属性不一样),通过resultMap进行一次映射。

可以使用简单的做法:(取别名)

二、多表查询

在实际中,数据不仅仅来源与一张表(多表查询)

通过Mybatis开发DAO的步骤:

1、建表

2、实体

3、类型别名

4、DAO接口

5、mapper文件实现DAO

6、mapper文件注册

7、测试(Service)

1、Mybatis进行多表操作时需要解决的问题

1、实体需要处理:实体与实体之间并不是孤立存在 ,存在关系从属有has a

2、Mybatis做多表查询表的处理

3、mapper文件处理

a、一对一关系(Person----Passport)

建表

实体

类型别名

DAO的接口

mapper文件实现DAO

注意:

1、在查询时,通常需要给字段取别名,防止查询是多表中出现相同的字段

2、实体之间如果需要建立双向关系,在两个实体中都需要添加关系属性

mapper文件注册

测试

b、一对多关系

建表

实体

mapper文件

c、多对多关系

建表

实体:

mapper文件

三、动态sql(Dynamic SQL)

作用:简化开发

1、sql片段:把重复使用的sql片段提取出来,方便使用

2、where标签

第二种处理:

3、set标签:

第二种处理:

4、jdbcType:当插入数据或者修改数据时,添加或者修改的值就为null

<update  id="">

update t_person set name=#{pname,jdbcType=VARCHAR} where id=#{pid}

</update>

常用的jdbcType:TINYINT  DOUBLE  TIMESTAMP

5、${value}  动态sql拼接

四、Mybatis的缓存(cache)

问题:多次相同的查询操作,频繁的操作操作数据,频繁使用网络I/O和磁盘I/O,大大降   低软件效率。

缓存:缓冲存储,属于内存的一块区域。把第一次查询的结果保存在缓存,以后相同的查询   操作,可以避免与数据库的交互

缓存可能存在的风险:

脏读:数据库的数据和查询的结果(从缓存中)不一样,Mybatis规避,只要事务提交,Mybatis就会清空缓存

使用缓存:

1、在mybatis-conf.xml中配置,让缓存生效

<settings>

<setting name="cacheEnabled" value="true"/>

</settings>

2、在需要使用缓存查询的mapper文件中加上<cache></cache>

3、缓存在SQLSession关闭后生效

4、对实体进行序列化

注意:

查询完毕,关闭SQLSession,让缓存生效

DML操作完毕,SQLSession提交,清空缓存,避免脏读

Mybatis学习(叁)的更多相关文章

  1. MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作(转载)

    本文转载自:http://www.cnblogs.com/jpf-java/p/6013540.html 上一篇博文MyBatis学习总结(一)--MyBatis快速入门中我们讲了如何使用Mybati ...

  2. MyBatis学习总结(八)——Mybatis3.x与Spring4.x整合(转载)

      孤傲苍狼 只为成功找方法,不为失败找借口! MyBatis学习总结(八)--Mybatis3.x与Spring4.x整合 一.搭建开发环境 1.1.使用Maven创建Web项目 执行如下命令: m ...

  3. MyBatis学习总结(七)——Mybatis缓存(转载)

      孤傲苍狼 只为成功找方法,不为失败找借口! MyBatis学习总结(七)--Mybatis缓存 一.MyBatis缓存介绍 正如大多数持久层框架一样,MyBatis 同样提供了一级缓存和二级缓存的 ...

  4. (原创)mybatis学习二,spring和mybatis的融合

    mybatis学习一夯实基础 上文介绍了mybatis的相关知识,这一节主要来介绍mybaits和spring的融合 一,环境搭建 1,jar包下载,下载路径为jar包 2,将包导入到java工程中 ...

  5. (原创)mybatis学习一,夯实基础

    一,what?(是什么) MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可 ...

  6. MyBatis学习--简单的增删改查

    jdbc程序 在学习MyBatis的时候先简单了解下JDBC编程的方式,我们以一个简单的查询为例,使用JDBC编程,如下: Public static void main(String[] args) ...

  7. MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作

    上一篇博文MyBatis学习总结(一)——MyBatis快速入门中我们讲了如何使用Mybatis查询users表中的数据,算是对MyBatis有一个初步的入门了,今天讲解一下如何使用MyBatis对u ...

  8. 【Todo】Mybatis学习-偏理论

    之前写过好几篇Mybatis相关的文章: http://www.cnblogs.com/charlesblc/p/5906431.html  <SSM(SpringMVC+Spring+Myba ...

  9. MyBatis学习系列三——结合Spring

    目录 MyBatis学习系列一之环境搭建 MyBatis学习系列二——增删改查 MyBatis学习系列三——结合Spring MyBatis在项目中应用一般都要结合Spring,这一章主要把MyBat ...

  10. MyBatis学习系列二——增删改查

    目录 MyBatis学习系列一之环境搭建 MyBatis学习系列二——增删改查 MyBatis学习系列三——结合Spring 数据库的经典操作:增删改查. 在这一章我们主要说明一下简单的查询和增删改, ...

随机推荐

  1. thinkphp nginx 配置

    thinkphp convention配置:'URL_MODEL' => '2', //URL模式 nginx rewrite配置: if (!-e $request_filename) { r ...

  2. javascript encodeURI和encodeURIComponent的比较

    总结:encodeURI对除三种字符()之外的字符进行编码 encodeURIComponent对除两种字符之外的字符进行编码,保留字符会被转义 在进行SaaS前端开发的时候,大家经常会用到两个Jav ...

  3. php文本里 php和html代码谁先执行谁啊

    php文本里 php和html代码谁先执行谁啊 比如php里包含一个html文本,然后html代码里又包含了一个php文本,是按照谁先包含谁被服务器执行吗,即先执行php ,再执行里面的html,然后 ...

  4. MySQL(三) —— 约束以及修改数据表

    约束: 1. 约束保证数据的完整性和一致性: 2. 约束分为表级约束和列级约束: 3. 约束类型包括:NOT NULL, PRIMARY KEY, UNIQUE KEY, DEFAULT, FOREI ...

  5. ARM寻址方式

    寻址方式: 所谓寻址方式就是处理器根据指令中给出的信息来找到指令所需操作数的方式. 1.立即数寻址 2.寄存器寻址 3.寄存器间接寻址 就是寄存器中存放的是操作数在内存中的地址 例如以下指令: LDR ...

  6. Spark.ML之PipeLine学习笔记

    地址: http://spark.apache.org/docs/2.0.0/ml-pipeline.html   Spark PipeLine 是基于DataFrames的高层的API,可以方便用户 ...

  7. javascript权威指南笔记--javascript语言核心(六)

    通过ECMAScript 3创建的属性都是可写的.可枚举的.可配置的. 在ECMAScript 5中,数据属性的4个特性分别是它的值.可写性.可枚举性.可配置性.存取器属性的特性是读取.写入.可枚举性 ...

  8. XAF实现运行时填加验证规则并保存到数据库中

    有几种方法可以用来声明一个验证规则.最常用的方法是使用对应的Attribute来定义.详见这里.验证模块还允许您通过在业务类实现 IRuleSource 接口定义自定义的验证规则的来源. IRuleS ...

  9. 2013 Multi-University Training Contest 1

    HDU-4605 Magic Ball Game 题意:给定一颗以1为根的数,每个节点要么有两个孩子节点,要么没有孩子,每个节点有一个重量,现在从节点1往下放置一个小球,根据小球和节点的重量的不同球落 ...

  10. web设计经验<二>设计华丽的用户体验的6个热门技巧

    你是否曾经下载了一个应用,却发现它“很难使用”?对于大多数智能手机用户来说,答案是肯定的. 有趣的是,每四个手机应用中就有一个应用在下载后被“打入冷宫”. 如果一个应用能够吸引一个人下载并且打开它,但 ...