一、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. html与表格知识

    <html>    --开始标签 <head> 网页上的控制信息 <title>页面标题</title> </head> <body& ...

  2. Python 字符串、元组、字典转换成列表

  3. merge into的用法

    merge into 是英文的一个短语,意思是汇入,合并.顾名思义,merge into是合并了insert和update操作,其执行效率要高于分别单独执行insert和update语句. //创建表 ...

  4. CronTrigger:Corn表达式

    定时触发 CronTrigger CronTriggers往往比SimpleTrigger更有用,如果您需要基于日历的概念,而非SimpleTrigger完全指定的时间间隔,复发的发射工作的时间表.C ...

  5. linux下的基本网络配置

    第一种:使用命令修改(直接即时生效,重启失效)#ifconfig eth0 192.168.0.1 netmask 255.255.255.0 up说明:eth0是第一个网卡,其他依次为eth1,et ...

  6. MySql使用show processlist查看正在执行的Sql语句

    今天上班例行的查看了下服务器的运行状况,发现服务器特卡,是mysqld这个进程占用CPU到了99%导致的. 比较好奇是那个程序在使用mysql导致cpu这么高的,通过show processlist命 ...

  7. matplotlib

    前导: 安装 numpy http://sourceforge.net/projects/numpy/files/ http://sourceforge.net/projects/numpy/file ...

  8. 4、Type fundamentals

    1.All Types Are Derived from System.Object The CLR requires all objects to be created using the new ...

  9. POJ 3617 Best Cow Line(最佳奶牛队伍)

    POJ 3617 Best Cow Line Time Limit: 1000MS Memory Limit: 65536K [Description] [题目描述] FJ is about to t ...

  10. UVA 12898 - And Or 数学

    题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...