Chinaunix首页 | 论坛 | 博客
  • 博客访问: 5558513
  • 博文数量: 348
  • 博客积分: 2173
  • 博客等级: 上尉
  • 技术积分: 7900
  • 用 户 组: 普通用户
  • 注册时间: 2011-08-24 17:26
个人简介

雄关漫道真如铁,而今迈步从头越。

文章存档

2022年(4)

2020年(6)

2019年(2)

2018年(2)

2017年(34)

2016年(49)

2015年(53)

2014年(47)

2013年(72)

2012年(79)

分类: 敏捷开发

2019-10-24 12:19:28

1、MyBatis是什么?
MyBatis是一个优秀的持久层框架,它对JDBC的操作数据库的过程进行封装。这个封装的路线是这样的:java.sql.Statement -> MyBatis的Executor -> MyBatis的SqlSession
推荐阅读1:MyBatis核心对象SqlSession介绍
推荐阅读2:MyBatis的工作原理以及核心流程介绍
MyBatis使开发者只需要关注 SQL 本身,而不需要花费精力去处理例如注册驱动、创Connection、创建Statement、手动设置参数、结果集检索等JDBC繁杂的过程代码。MyBatis通过xml或注解的方式将要执行的各种Statement(Statement、PreparedStatement、CallableStatement)配置起来,并通过Java对象和Statement中的SQL进行映射生成最终执行的SQL语句,最后由MyBatis框架执行SQL并将结果映射成Java对象并返回。
2、JDBC问题总结
(1)数据库连接频繁开启和关闭,会严重影响数据库的性能。
(2)代码中存在硬编码,分别是数据库部分的硬编码和SQL执行部分的硬编码。
3、MyBatis框架设计与核心对象

SqlSessionFactory是MyBatis的核心对象,它是创建SqlSession的工厂类。SqlSessionFactory对象的实例可以通过SqlSessionFactoryBuilder对象类获得,而SqlSessionFactoryBuilder则可以从XML配置文件或一个预先定制的Configuration的实例构建出SqlSessionFactory的实例。每一个MyBatis的应用程序都是以一个SqlSessionFactory实例为核心。同时,SqlSessionFactory是线程安全的,SqlSessionFactory一旦被创建,应该在应用执行期间都存在。在应用运行期间不要重复创建多次,建议使用单例模式。
SqlSession是MyBatis的另一个关键对象,类似于JDBC中的Connection,它是应用程序与持久层之间执行交互操作的一个单线程对象。SqlSession的底层封装了JDBC连接,可以用SqlSession实例来直接执行被映射的SQL语句。SqlSession是线程不安全的,每个线程都应该有它自己的SqlSession实例,SqlSession的实例不能被共享。不能将SqlSeesion实例的引用当做一个类的静态属性。
4、MyBatis执行过程
第一步:MyBatis通过读取配置文件信息(全局配置文件和映射文件),构造出SqlSessionFactory,即会话工厂。
MyBatis配置文件,包括MyBatis全局配置文件和MyBatis映射文件,其中全局配置文件配置了数据源、事务等信息;映射文件配置了SQL执行相关的信息。
第二步:通过SqlSessionFactory,MyBatis可以创建SqlSession(即会话),MyBatis是通SqlSession来操作数据库的。
第三步:MyBatis操作数据库。SqlSession本身不能直接操作数据库,它是通过底层的Executor执行器接口来操作数据库的。Executor接口有两个实现类,一个是普通执行器,一个是缓存执行器。Executor执行器要处理的SQL信息是封装到一个底层对象MappedStatement中。该对象包括:SQL语句、输入参数映射信息、输出结果集映射信息。其中输入参数和输出结果的映射类型包括Java的简单类型、HashMap集合对象、POJO对象类型。
Mybatis中文手册网站

阅读(192518) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~