MyBatis框架基础

冷暖自知 提交于 2020-11-07 10:15:16

1、ORM模型

        在了解MyBatis之前,我们先了解一下什么是ORM模型,MyBatis就是一个ORM模型。

1.1、传统JDBC方式的缺点

        a、工作量相对较大

        b、必须对JDBC编程可能产生的异常进行捕获处理并正确关闭资源

        因为有这样的缺点,导致编写简单的SQL都十分的复杂,所以出现了ORM模型,所有的ORM模型都是基于JDBC进行封装的,不同的ORM模型对JDBC封装的强度是不一样的。

1.2、ORM模型基本知识

        定义:ORM即关系映射(Object Relational Mapping),简言之,数据库的表和简单Java对象(POJO)的映射关系模型。主要解决数据库和POJO对象的互相映射。

2、MyBatis

        历史,MyBatis的前身是Apache的一个开元项目iBatis,2010年这个项目有Apache software foundation迁移到了Google code,并改名为MyBatis,2013年11月迁移到Github,目前MyBatis由Github维护。

2.1、MyBatis的基本构成

        a、SqlSessionFactoryBuider(构造器):根据配置信息或代码来生成SqlSessionFactory(工厂接口)

        b、SqlSessionFactory(单例模式,工厂):依靠工厂生成SqlSession(会话)。

        c、SqlSession:既可以发送SQL去执行并返回结果,也可获取Mapper接口。

        d、SQL Mapper:由Java接口和XML文件(或注解)构成,需要给出因对SQL和映射规则。负责发送SQL去执行,并返回结果。

2.2、各基本结构的创建

        2.2.1、创建SqlSessionFactory

                原理介绍:

                SqlSessionFactory是MyBatis应用的核心,SqlSessionFactory是一个工厂接口不是实现类,其任务是创建SqlSession,它通过SqlSessionFactoryBuilder进行创建。SqlSessionFactoryBuilder创建SqlSessionFactory时依赖的一个类是Configuration,Configuration类全称是org.apache.ibatis.session.Configuration,Configuration的对象保存整个应用的基本配置,并且存在于整个MyBatis应用的声明周期中,方便重复使用。

                SqlSessioinFactory有两个实现类,DefaultSqlSession和SqlSessionManager(没有使用)。

                关系图如下

                    

                使用XML方式构建SqlSessionFactory

                        XML配置文件:

               

                          代码创建:

                

                         MyBatis的解析程序将mybatis-config.xml文件配置的信息解析到configuration类对象里,然后利用SqlSessionFactroyBuilder读取这个对象并创建SqlSssionFactory。

                使用代码方式创建:

                代码如下:

DataSource dataSource = BlogDataSourceFactory.getBlogDataSource();
TransactionFactory transactionFactory = new JdbcTransactionFactory();
Environment environment = new Environment("development", transactionFactory, dataSource);
Configuration configuration = new Configuration(environment);
configuration.addMapper(BlogMapper.class);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(configuration);

                 大部分情况下不建议使用代码方式构建,除非要加入自己的特性。如:解码数据源信息。

        2.2.2、创建SqlSession

                SqlSession接口的实现类有两个,分别是DefaultSqlSession和SqlSessionManager,SqlSession相当于JDBC的一个连接,用完后需要及时关闭。

                SqlSession作用

                        a、获取映射器,让映射器通过名名空间和方法名找到对应的SQL,发送给数据库执行后返回结果

                        b、直接通过命名信息去执行SQL返回结果,这是iBatis留下的方法(不建议使用)

                使用代码

                        

        2.2.3、创建映射器

                组成:Java接口+XML文件(或注解)。

                作用:

                        a、定义参数类型

                        b、描述缓存

                        c、描述SQL语句

                        d、定义查询结果和POJO映射关系

                建议使用XML文件方式,优点有二:a、能够充分发挥其强大的功能。b、降低维护成本

                代码实现:

                a、Java接口

                

                b、XML映射文件

                

                构建POJO

                POJO的构建时注意属性名与SQL中列名保持一致。

               

        2.3、各组成部分的生命周期

                SqlSessioinFactoryBuilder:只用来构建SqlSessionFactory,构建完就失效,方法局部。

                SqlSessionFactory:单例模式,在MyBatis应用的整个声明周期中都有效。

                SqlSession:请求数据库处理事务的过程中有效,线程不安全,存在于一个应用的请求和操作中。

                Mapper:方法级别的,最大声明周期和SqlSession相同。

总结:

        现在我们介绍了MyBatis的基本组成,以及各个组成部分的创建及其声明周期,我们可以搭建一个简单的MyBatis应用的框架,接下来我们将进一步探讨MyBatis的配置及Mapper.xml的配置。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!