您的位置:首页 > 编程语言 > Java开发

MyBatis从入门到精通、MyBatis知识点整理总结

2018-03-23 09:56 344 查看

一.初识MyBatis

1、MyBatis是Java轻量级的持久层框架
2、常见的持久层框架:hibernate,mybatis
3、什么是持久层框架:
1》Java当中的对象有两种状态,一种是瞬态,一种是持久态
2》所谓瞬态:是指new了一对象,使用完毕后,java自动垃圾回收了,对象中的属性和状态没有保持住,这就是瞬态对象。
3》所谓持久态:这个对象的状态和属性保持住了,其中保存的位置有很多种,比如文件或数据库。如果保存在数据库中,我们就可以使用jdbc来存取里面的数据,而jdbc不是很方便,这样产生了一种框架,叫持久层框架,目的就是很方便地来操作数据库中的对象。
4、Hibernate和mybatis的区别:hibernate比较重,mybatis比较轻
1》MyBatis的”轻”:便于使用,方便学习,方便开发维护,两个字简单;不过需要写原生SQL,不利于数据库移植;
2》Hibernate的“重”:功能强大,数据库无关性好,基本上不需要写SQL,但学习门槛不低,要精通门槛更高,怎样用好Hibernate方面需要你的经验和能力都很强才行
5、MyBatis的发展历史
1》MyBatis是由iBATIS发展而来的,iBATIS = “internet” + “abatis” 的英文组合
①abates: 英文的意思是路障,或铁丝网
②iBATIS原本是apache下面的一款加密软件,后来转型成了java持久层框架
③从iBATIS到MyBatis:改名的原因是,从apache è google code , 后来又从google code è Github ,现在下载mybatis,需要从Github中下载,路径如下:https://github.com/mybatis/mybatis-3/releases https://www.oschina.net/news/72595/mybatis-spring-1-3-0 6、MyBatis的特点
1》开源的优秀持久层框架
优秀:体现在两个方面
★一个是”轻”: 便于使用,方便学习,方便开发维护,两个字简单
★另外一个是SQL语句与代码分离
2》SQL语句与代码分离
★优点:便于管理和维护
★缺点:不便于调试,需要借助日志工具获得信息
3》用标签控制动态SQL的拼接
★在jdbc中,需要手动拼装sql语句,这会造成sql注入等程序漏洞;而且开发比较繁琐,经常容易报错
★在mybatis中,使用了一种叫动态SQL技术,用来替换这种拼装SQL语句
★优点:用标签代替编写逻辑代码
★缺点:拼接复杂SQL语句时,没有代码灵活,比较复杂
4》结果集与Java对象的自动映射
★优点:保证名称相同即可自动映射
★缺点:对开发人员所写的SQL依赖性很强
5》编写原生SQL:
★优点:接近JDBC,很灵活
★缺点:对SQL语句依赖程度很高,所以MyBatis有时会被称为”半自动”的ORM框架,数据库移植不方便。
6》Mybatis实现了接口绑定,使用更加方便。
★Mybatis实现了DAO接口与xml映射文件的绑定,自动为我们生成接口的具体实现,使用起来变得更加省事和方便。
二.MyBatis的环境搭建
1. 下载mybatis包
https://github.com/mybatis/mybatis-3/releases
★下载最新版本的jar包以及源代码,如下图:
 


2. 包导入工程
★Mybatis下载完成,解压之后的目录结构
 


★首先导入mybatis-3.4.1.jar
★然后导入lib目录下的jar包
★最后再导入mysql数据库针对jdbc驱动的jar包:mysql-connector-java-5.1.21.jar
3. 日志配置
★为什么配置日志:
★mybatis的sql语句输出,需要通过日志帮忙输出,目的是为了方便程序调试
★加入日志配置文件log4j.properties,复制路径如下:
★将log4j.properties复制到classpath根目录下
 

三.MyBatis的工作流程

1. 工作流程概述
 


1>读取配置文件( 基本配置文件,里面包含两部分信息,一部分是连接数据库的相关信息,另一部分是MAP配置文件的存放位置 )
2>mybatis-3-mybatis-3.4.1\src\test\java\org\apache\ibatis\submitted\complex_property\ Configuration.xml :将此文件复制到工程中
 


3>生成SqlSessionFactory
4>SqlSessionFactory代表与数据库的连接
5>通过SqlSessionFactory可以创建SqlSession
6>建立SqlSession
7>通过SqlSession调用MyBatis中的各种API函数,来执行增删改查操作
8>查询MAP配置( 里面存有SQL语句 )
9>返回结果
10>关闭SqlSession
2、配置文件(包括两种,一种是基本配置文件,一种是MAP映射配置文件)
3、SqlSession
1》SqlSession的作用:
★向Sql语句传入参数
★执行Sql语句
★获取执行Sql语句的结果
★事务控制
2》如何得到SqlSession:
★通过配置文件获取数据库连接相关信息
★通过配置信息构建SqlSessionFactory
★通过SqlSessionFactory打开数据库会话SqlSession
3》生命周期:
★一个程序中,一般只建立一个SqlSessionFactory
★一个程序中,可以创建多个Session,当执行某个数据库操作时,建立SqlSession,数据库操作执行完毕后,SqlSession需要关闭,所以等下次再进行数据库操作时,需要重新建立新的SqlSession对象。
四.案例演示
1. 案例1
★在没有整合spring框架之前,基于mybatis,实现客户表的增删改查,分别用两种方式实现:
★一种是通过namespace+id, 找到sql语句,执行对应sql
★一种是通过dao接口执行sql语句对应的方法
 



 





 


 




2. 案例2:
l 在演示案例2之前,先用mybatis自定义一个增删改查的dao
l mybatis与spring整合之后,实现客户表的增删改查
l 第一步:引入spring相关的jar包,如下图:
 


l 第二步:配置spring.xml,如下图:
 


 
l 第三步:配置spring-mybatis.xml,如下图:
 


l 第四步:测试类:
 



 
3. 案例3:
 基于mybatis,实现学生表和老师表的多表的查询
Teacher.java
 


Student.java
 


 TeacherMapper.xml
 


l StudentMapper.xml
 


l 测试类
 


 


 


五.MyBatis的优缺点

优点:1、简单易学       mybatis本身就很小且简单。没有任何第三方依赖,最简单安装只要两个jar文件+配置几个sql映射文件易于学习,易于使用,通过文档和源代码,可以比较完全的掌握它的设计思路和实现。 2、灵活       mybatis不会对应用程序或者数据库的现有设计强加任何影响。 sql写在xml里,便于统一管理和优化。通过sql基本上可以实现我们不使用数据访问框架可以实现的所有功能,或许更多。3、解除sql与程序代码的耦合       通过提供DAL层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易单元测试。sql和代码的分离,提高了可维护性。 4、提供映射标签,支持对象与数据库的orm字段关系映射
5、提供对象关系映射标签,支持对象关系组建维护
6、提供xml标签,支持编写动态sql。
缺点:1、编写SQL语句时工作量很大,尤其是字段多、关联表多时,更是如此。
2、SQL语句依赖于数据库,导致数据库移植性差,不能更换数据库。3、框架还是比较简陋,功能尚有缺失,虽然简化了数据绑定代码,但是整个底层数据库查询实际还是要自己写的,工作量也比较大,而且不太容易适应快速数据库修改。4、二级缓存机制不佳
总结       mybatis的优点同样是mybatis的缺点,正因为mybatis使用简单,数据的可靠性、完整性的瓶颈便更多依赖于程序员对sql的使用水平上了。sql写在xml里,虽然方便了修改、优化和统一浏览,但可读性很低,调试也非常困难,也非常受限。      mybatis没有hibernate那么强大,但是mybatis最大的优点就是简单小巧易于上手,方便浏览修改sql语句。
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息