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 数据库的经典操作:增删改查. 在这一章我们主要说明一下简单的查询和增删改, ...
随机推荐
- shell控制流结构笔记
man test 可以看见这些 比较符号:-lt小于 -le小于等于 -gt大于 -ge大于等于 -ne不等于 -eq等于 < 小于(需要双 ...
- 【Java】Float计算不准确
大家可能都遇到过,float在计算某些值时,会有不准确的情况. 比如如下情况: > 计算不准确 package com.nicchagil.study.java.demo.No10float计算 ...
- VirtualBox中安装CentOS-6.6虚拟机(转载)
1. 下载 可以到官网下载,http://mirror.centos.org/centos/ 如果下载速度太慢的话,也可以到163镜像下载: http://mirrors.163.com/centos ...
- WINCE+6410 拨号上网
我们现在的模块用的是USB接口,然后模拟成一个COM6进行通信,在CE的: 控制面板->网络连接 里要新建一个连接,选择"拨号连接"然后设置好区域代码,还有附加解调器命令+C ...
- 【Unity3D游戏开发】定制新建C#文件的头描述 (三三)
unity添加新脚本的时候,可以定制[开发者姓名][开发日期][文件描述][版权声明]等,省的到时候不知道谁写的,也没有个描述,关键是TNND连个背锅的人都没有 其实unity已经给我们提供了新建脚本 ...
- 【转载】CMake 简介和 CMake 模板
转载自我的博客: CMake 简介和 CMake 模板 . 如果你用 Linux 操作系统,使用 cmake 会简单很多,可以参考一个很好的教程: CMake 入门实战 | HaHack .如果你用 ...
- jquery选择器 :first与:first-child区别
一个例子: <ul> <li>John</li> <li>Karl</li> <li>Brandon</li> ...
- MySQL性能优化的21个最佳实践 和 mysql使用索引
1. 为查询缓存优化查询 当有很多相同的查询被执行了多次的时候,这些查询结果会被放到一个缓存中,这样,后续的相同的查询就不用操作表而直接访问缓存结果了. 2. EXPLAIN SELECT 查询 ...
- [SAP ABAP开发技术总结]Form(subroutine)、Function参数传值传址
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- Websocket————错误总结
websocket 一.需要注意的是,js建立连接处完整的js代码要执行完成退出后才会真正发起建立连接请求,如果在此之前发送消息则会报错如下: InvalidStateError: An attemp ...