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 数据库的经典操作:增删改查. 在这一章我们主要说明一下简单的查询和增删改, ...
随机推荐
- Cpdetector编码识别
概述 浏览器在打开一个网页时,首要任务是判断网页的编码格式,然后采用合适的编码进行解析:我们常用的文本编辑器在打开文档时同样需要判断文档的编码进行相应的解析.这涉及到的技术就是编码甄别,下面我们介绍一 ...
- flume ng系列之——flume安装
flume版本:1.5.0 1.下载安装包: http://www.apache.org/dyn/closer.cgi/flume/1.5.0/apache-flume-1.5.0-bin.tar.g ...
- 【Java】聊聊常用的摘要算法,比如MD5
摘要算法的特性 摘要算法的目的的将信息进行简单地摘要,将任意长的信息摘要成固定长的信息.比如MD5,将任意长的信息摘要成128位的摘要. 不可逆的,将报文摘要成一段信息后,无法通过摘要信息还原会报文. ...
- linux定时任务crontab
今天在执行mysql定时任务语句时候问了很多大拿,都建议我不要随便在生产环境下写定时任务这样的语句,有的说会有延时,那样的话就不准了,有的说在.系统时间和本地时间不一致怎么办?后来就建议我用linux ...
- centos 安装 mysql 5.6和workbench
windows下安装mysql很简单,去官网找到.msi文件,一键安装就OK了. Centos下面安装Mysql5.6其实也是蛮简单的. 注意:centos6.5默认mysql版本是5.1的 1.添加 ...
- SqlSever基础 len函数 返回一个字符串的长度
镇场诗:---大梦谁觉,水月中建博客.百千磨难,才知世事无常.---今持佛语,技术无量愿学.愿尽所学,铸一良心博客.------------------------------------------ ...
- C#语法基础用法Dictionary排序
Dictionary排序 1.先看效果图: 2.核心逻辑如下: Dictionary<int, string> list = new Dictionary<int, string&g ...
- 滤镜模糊效果,利用了文字阴影和透明。其实是抄的iSlider官网的
<!DOCTYPE html> <html> <meta charset="UTF-8"> <meta name="viewpo ...
- How to evaluate a transimpedance amplifier (part 2)
In my previous blog on "How to evaluate a transimpedance amplifier, part 1", we looked at ...
- 图-用DFS求连通块- UVa 1103和用BFS求最短路-UVa816。
这道题目甚长, 代码也是甚长, 但是思路却不是太难.然而有好多代码实现的细节, 确是十分的巧妙. 对代码阅读能力, 代码理解能力, 代码实现能力, 代码实现技巧, DFS方法都大有裨益, 敬请有兴趣者 ...