MyBatis思维导图
1、初识框架技术
2、搭建MyBatis环境
3、掌握MyBatis的核心API
4、掌握MyBatis的核心配置文件:主要用于配置数据库连接和MyBatis运行时所需的各种特性
5、掌握SQL映射文件(或者使用自动生成SQL映射文件的插件)
6、掌握MyBatis缓存
7、Dao上级操作
8、掌握动态SQL
9、掌握MyBatis框架的优缺点和其使用场合
-----------------------------------------------------------------------------------------------------------------------
---------------知识点详情
-------------------------------------------------------------
1、初识框架技术
1.1什么是框架
框架(Framework)是一个提供了可重用的公共结构的半成品,它成为构建新的应用程序提供了极大的便利,更提供了可重用的设计;
1.2当前的主流框架
1.2.1 Struts2:
Struts2以Webwork设计思想为核心,吸收了Struts框架的部分优点,提供了一个更加整洁的基于MVC设计模式实现的Web应用程序框架。
它引入了几个新的框架特性:从逻辑中分离出横切关注点的拦截器,减少或者消除配置文件,贯穿整个框架的强大表达式语言,支持可重用的标签API等。
Struts2充分利用了从其他MVC框架学到的经验和教训,使整个框架更加清晰、灵活(引入了拦截器)。
1.2.2 Hibernate:
Hibernate是一个优秀的持久化框架(ORM),负责简化将对象数据保存到数据库中,或从数据库中读取数据并封装到对象的工作。
Hibernate通过简单配置和编码即可替代JDBC繁琐的程序代码。
1.2.3Spring:
Spring是一个开源框架。它的目标是使现有的JavaEE技术更容易使用。
它只要作为依赖注入容器和AOP实现存在,还提供了声明式事务、对DAO层的支持等简化开发等功能。
Spring可以很方便地与SpringMVC、Struts2、Mybatis、Hibernate等框架集成。
1.2.4Spring MVC:
是Spring框架提供的构建Web应用程序的全功能MVC模块,属于Spring Framework的后续产品。
它拥有高度的可配置性,支持多种视图技术,相当灵活。
Spring整合Springmvc是无缝集成,是一个高性能的架构模式。
1.2.5MyBatis:
MyBatis是一个很优秀的数据持久层框架(ORM),在实体类和SQL语句之间建立映射关系,是一种半自动化的ORM实现;
MyBatis的封装性要低于Hibernate,性能优越,并且小巧;
2、搭建MyBatis环境
2.1什么是数据持久化:将内存中的数据模型转换为存储模型,以及将存储模型转换为内存中的数据模型的统称。
2.2什么是ORM:
对象关系映射(Object Relational Mapping ORM)是一种数据持久化技术。
它在对象模型和关系型数据库之间建立起对应关系,并且提供了一种机制,通过JavaBean对象去操作数据库表中的数据。
2.3搭建MyBatis环境
2.3.1、下载 jar包&部署jar包,或在pom.xml添加jar包依赖 (mybatis-3.2.2.jar)
2.3.2、编写配置文件
2.3.3、创建实体类(或者使用自动生成实体类的插件)
2.3.4、创建dao接口(或者使用自动生成dao接口的插件)
2.3.5、创建sql映射文件(或者使用自动生成sql映射文件的插件)
2.3.6、在业务逻辑层调用
3、掌握MyBatis的核心API
3.1SQLSessionFactoryBuilder:构建SQLSessionFactory
3.2SqlSessionFactory:该对象可以完成对配置文件的读取factory=new SqlSessionFactoryBuilder().build(is);
3.3SqlSession:该对象的作用是调用mapper文件进行数据库操作
4、掌握MyBatis的核心配置文件:主要用于配置数据库连接和MyBatis运行时所需的各种特性
properties
setting:引入log4j日志配置
typeAliases:配置类型别名
envrionments:配置运行的环境
transactionManager:配置事务管理(JDBC)
dataSource:配置数据源(POOLED:mybatis自带的数据源;JNDI:基于tomcat的数据源)
mappers:引入映射文件,告诉mybatis去哪里找到SQL映射文件。
mapper标签:是映射文件的根元素,只有一个属性namespace-->用于区分不同的mapper,是全局唯一
5、掌握SQL映射文件(或者使用自动生成SQL映射文件的插件)
5.1select标签:表示查询语句
id属性:该命名空间下唯一标识符。
resultType属性:表示sql语句返回值类型。
本质是相同,都是Map数据结构,但不能同时存在。
5.2resultType与resultMap
resultType:直接表示返回类型,包括基本数据类型和复杂数据类型。
resultMap:应用场景一般是:数据库字段信息与对象属性不一致或者需要做复杂的联合查询,以便自由控制映射结构。
6、掌握MyBatis缓存
一级缓存:是mybatis自带的本地缓存,作用范围为session的区域,当session flush或者close之后,该session中所有的cache就会被清空;
二级缓存:全局缓存,她超出了session范围,可以被所有的SQLSession共享,开启它只需要mybatis的核心配置文件(mybatis-config.xml)的setting中设置即可;
2.1) <settings>
<setting name="cacheEnabled" value="true"/>
</settings>
2.2)默认是未开启二级缓存,需要手动开启。另外,它的作用域是针对mapper的namespace而言的,及只有在此namespace的查询才能共享这个cache。
<mapper namespace="com.kgc.dao.UserMapper">
<!---cache配置-->
<cache eviction="fifo" flushInterval="60000" size="512" readOnly="true"/>
</mapper>
2.3)在mapper文件配置支持cache后,如果需要对个别查询进行调整,可以单独设置cache
<select id="getUserList" resultType="User" useCache="true">
7、Dao上机操作
实现多参数传递:
@Param注解
一般超过4个以上的参数,最好封装成对象入参 或者 map
insert、update、delete操作要注意什么:
7.2.1接口方法的返回值为int类型,表示执行sql语句影响的行数;
7.2.2均没有resultType属性;
事务处理:
7.3.1factory.openSession(faclse); 手动提交事务;
7.3.2session.commit(); 提交事务
7.3.3session.rollback(); 回滚事务
一对多的操作:使用association
多对一的操作:使用collection
8、掌握动态SQL
if:利用if实现简单的条件选择;
choose(when, otherwise):相当于Java中的switch语句,通常与when和otherwise搭配使用;
where:简化SQL语句中的where的条件判断;
set:解决动态更新语句;
trim:可以灵活地除去多余的关键字;
foreach:迭代一个集合;
9、掌握MyBatis框架的优缺点和其使用场合
9.1MyBatis框架的特点:
9.1.1与jdbc相比,减少了50%以上的代码;
9.1.2Mybatis相当灵活,不会对应的应用程序或者数据库的现有设计强加任何影响,
SQL写在MXL里,从代码中彻底分离,既降低耦合度,又便于统一管理和优化
9.2Mybatis框架的缺点
9.2.1SQL语句的编写工作量比较大,对开发人员编写SQL语句的功底有一定的要求;
9.2.2SQL语句依赖于数据库,导致数据库的移植性比较差,不能随意更换数据库;
9.3框架试用场合
9.3.1MyBatis专注于SQL本身,是一个足够灵活的DAO层解决方案;
9.3.2对性能要求很高的项目,或者需求变化比较多的项目,如互联网项目,MyBatis将是不错的选择;
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
还在完善中。。。
MyBatis思维导图的更多相关文章
- mybatis思维导图(二)
写在前面 上一篇文章写了mybatis的基本原理和配置文件的基本使用,这一篇写mybatis的使用,主要包括与sping集成.动态sql.还有mapper的xml文件一下复杂配置等.值得注意的是,导图 ...
- mybatis思维导图(一)
写在前面 与hibernate相比,我无疑更喜欢mybatis,就因为我觉得它真的好用,哈哈.它简单上手和掌握:sql语句和代码分开,方便统一管理和优化:当然缺点也有:sql工作量很大,尤其是字段多. ...
- 2020面试还搞不懂MyBatis?快看看这27道面试题!(含答案和思维导图)
前言 MyBatis是一个优秀的持久层ORM框架,它对jdbc的操作数据库的过程进行封装,使开发者只需要关注SQL 本身,而不需要花费精力去处理例如注册驱动.创建connection.创建statem ...
- 面试BAT问的最多的27道MyBatis 面试题(含答案和思维导图总结)
前言 关于MyBatis总结了一个思维导图希望对大家有帮助 什么是 Mybatis? Mybatis 是一个半 ORM(对象关系映射)框架,它内部封装了 JDBC,开发时只需要关注 SQL 语句本身, ...
- 浅谈Java的主要学习要点_上海尚学堂java培训课程思维导图
Java是一种可以撰写跨平台应用程序的面向对象的程序设计语言.Java 技术具有卓越的通用性.高效性.平台移植性和安全性,广泛应用于PC.数据中心.游戏控制台.科学超级计算机.移动电话和互联网,同时拥 ...
- SSM框架学习思维导图
SSM框架学习思维导图 2017年08月11日 20:17:28 阅读数:1141 放上前段时间学习SSM框架以及Spring.SpringMVC.MyBatis的学习结果,输出思维导图一共四幅图.这 ...
- Java相关思维导图分享
非常多朋友都给我发私信希望获得一份Java知识的思维导图,我来不及一一答复.原先是给大家一个百度网盘的链接分享,大家能够自己去下载,可是不知道云盘还能用多久.把相关资源转移到了QQ的群共享中.须要的朋 ...
- Mybatis-plus 思维导图,让 Mybatis-plus 不再难懂
摘要: Mybatis-Plus(简称MP)是一个Mybatis的增强工具,在 Mybatis 的基础上只做增强不做改变,为简化开发.提高效率而生. mybatis-plus与mybatis myba ...
- mybatis-plus思维导图,让mybatis-plus不再难懂
mybatis-plus与mybatis mybatis Mybatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置 ...
随机推荐
- Linux - 版本控制系统SVN
0. 摘要 本文通过搭建SVN多版本库为例,介绍SVN的使用. SVN是一个集中式版本控制系统,在服务端部署中央版本库,所有开发人员客户端连接到中央版本库进行代码的提交和更新. Apache Subv ...
- 第一部分 OpenStack及其构成简介
一.云计算 云计算是一种计算模型,它将诸如运算能力.存储.网络和软件等资源抽象成为服务,以便让用户通过互联网远程享用,付费的形式也如同传统公共服务设施一样.因需而定.提供方便.动态改变和无限的虚拟 ...
- shuffle() 函数
shuffle() 方法将序列的所有元素随机排序. 以下是 shuffle()方法的语法: shuffle (lst ) 注意:此函数是无法直接访问,需要导入 random 模块,然后通过 rando ...
- 添加Image Stream(转)参考 开源容器云OpenShift
Image Stream是一组镜像的集合,可以在一个Image Stream中定义一些名称及标签,并定义这些名字及标签指向的具体镜像. 使用Image Stream的目的是方便地将一组相关联的镜像进行 ...
- html5的拖拽事件
原生拖放 一.若要一个元素可以被拖放,首先要为元素添加draggable属性 true 可以被拖放 false 不可以被拖放 auto 除img或url以外都可以被拖放 其他值 都不可以被拖放 注释: ...
- PCIE_DMA实例二:xapp1052的EDK仿真
一:前言 这篇博客是我应一位网友之约写的,他想要学习基于FPGA的PCIe DMA控制器设计,但是手上没有合适的Xilinx开发板,而且xapp1052又没有提供仿真代码,让他的学习陷入了困境.所以我 ...
- JavaWeb总结(七)
Web状态管理 - HTTP协议使用的是无状态的连接 - 对容器而言,每一个请求都来自于一个新的客户 解决方案-表单隐藏字段 <input type=”hidden” name=”session ...
- Deep Learning综述[上]
Deep-Learning-Papers-Reading-Roadmap: [1] LeCun, Yann, Yoshua Bengio, and Geoffrey Hinton. "Dee ...
- 微信小程序:设置页面计时自动跳转
一.功能描述 当出发某一事件后,希望在规定的时间后自动执行另一事件,比如页面跳转功能. 二.代码实现 使用setTimeout函数,单位为毫秒ms setTimeout(function(){ wx. ...
- 无聊中,写个常见的图片保护分类-iOS
当美工给出例如下面这种图的时候,但是需要拉伸的时候,就不得不做拉伸保护了. //调用代码 UIImage * img = [UIImage protectedImageWithLocalImageNa ...