Mybatis学习(叁)
一、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学习(叁)的更多相关文章
- MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作(转载)
本文转载自:http://www.cnblogs.com/jpf-java/p/6013540.html 上一篇博文MyBatis学习总结(一)--MyBatis快速入门中我们讲了如何使用Mybati ...
- MyBatis学习总结(八)——Mybatis3.x与Spring4.x整合(转载)
孤傲苍狼 只为成功找方法,不为失败找借口! MyBatis学习总结(八)--Mybatis3.x与Spring4.x整合 一.搭建开发环境 1.1.使用Maven创建Web项目 执行如下命令: m ...
- MyBatis学习总结(七)——Mybatis缓存(转载)
孤傲苍狼 只为成功找方法,不为失败找借口! MyBatis学习总结(七)--Mybatis缓存 一.MyBatis缓存介绍 正如大多数持久层框架一样,MyBatis 同样提供了一级缓存和二级缓存的 ...
- (原创)mybatis学习二,spring和mybatis的融合
mybatis学习一夯实基础 上文介绍了mybatis的相关知识,这一节主要来介绍mybaits和spring的融合 一,环境搭建 1,jar包下载,下载路径为jar包 2,将包导入到java工程中 ...
- (原创)mybatis学习一,夯实基础
一,what?(是什么) MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可 ...
- MyBatis学习--简单的增删改查
jdbc程序 在学习MyBatis的时候先简单了解下JDBC编程的方式,我们以一个简单的查询为例,使用JDBC编程,如下: Public static void main(String[] args) ...
- MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作
上一篇博文MyBatis学习总结(一)——MyBatis快速入门中我们讲了如何使用Mybatis查询users表中的数据,算是对MyBatis有一个初步的入门了,今天讲解一下如何使用MyBatis对u ...
- 【Todo】Mybatis学习-偏理论
之前写过好几篇Mybatis相关的文章: http://www.cnblogs.com/charlesblc/p/5906431.html <SSM(SpringMVC+Spring+Myba ...
- MyBatis学习系列三——结合Spring
目录 MyBatis学习系列一之环境搭建 MyBatis学习系列二——增删改查 MyBatis学习系列三——结合Spring MyBatis在项目中应用一般都要结合Spring,这一章主要把MyBat ...
- MyBatis学习系列二——增删改查
目录 MyBatis学习系列一之环境搭建 MyBatis学习系列二——增删改查 MyBatis学习系列三——结合Spring 数据库的经典操作:增删改查. 在这一章我们主要说明一下简单的查询和增删改, ...
随机推荐
- html与表格知识
<html> --开始标签 <head> 网页上的控制信息 <title>页面标题</title> </head> <body& ...
- Python 字符串、元组、字典转换成列表
- merge into的用法
merge into 是英文的一个短语,意思是汇入,合并.顾名思义,merge into是合并了insert和update操作,其执行效率要高于分别单独执行insert和update语句. //创建表 ...
- CronTrigger:Corn表达式
定时触发 CronTrigger CronTriggers往往比SimpleTrigger更有用,如果您需要基于日历的概念,而非SimpleTrigger完全指定的时间间隔,复发的发射工作的时间表.C ...
- linux下的基本网络配置
第一种:使用命令修改(直接即时生效,重启失效)#ifconfig eth0 192.168.0.1 netmask 255.255.255.0 up说明:eth0是第一个网卡,其他依次为eth1,et ...
- MySql使用show processlist查看正在执行的Sql语句
今天上班例行的查看了下服务器的运行状况,发现服务器特卡,是mysqld这个进程占用CPU到了99%导致的. 比较好奇是那个程序在使用mysql导致cpu这么高的,通过show processlist命 ...
- matplotlib
前导: 安装 numpy http://sourceforge.net/projects/numpy/files/ http://sourceforge.net/projects/numpy/file ...
- 4、Type fundamentals
1.All Types Are Derived from System.Object The CLR requires all objects to be created using the new ...
- POJ 3617 Best Cow Line(最佳奶牛队伍)
POJ 3617 Best Cow Line Time Limit: 1000MS Memory Limit: 65536K [Description] [题目描述] FJ is about to t ...
- UVA 12898 - And Or 数学
题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...