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

.初识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:

在演示案例2之前,先用mybatis自定义一个增删改查的dao

l mybatis与spring整合之后,实现客户表的增删改查

第一步:引入spring相关的jar包,如下图:

 

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

 

 

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

 

第四步:测试类:

 

 

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语句。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章