MyBatis框架基础

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(没有使用)。

                关系图如下

                    aac630e30286cc21702b7799125464bfc3e.jpg

                使用XML方式构建SqlSessionFactory

                        XML配置文件:

                5b75bee39c6719fc326f8f6700ab1f409e7.jpg

                          代码创建:

                0b33f40d30b46d0dd9c774db4b018f6188c.jpg

                         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留下的方法(不建议使用)

                使用代码

                        29c6222390f1e15261933cf2c149a33d133.jpg

        2.2.3、创建映射器

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

                作用:

                        a、定义参数类型

                        b、描述缓存

                        c、描述SQL语句

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

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

                代码实现:

                a、Java接口

                9c41fcfe127f582aca5bb6634a7edef1080.jpg

                b、XML映射文件

                9b998c9a0de614eab51a83318935a52e8be.jpg

                构建POJO

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

                0dafaea50098c4045c6f473f332da554a94.jpg

        2.3、个组成部分的声明周期

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

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

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

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

总结:

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

转载于:https://my.oschina.net/u/3942106/blog/1934740

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值