Mybatis成为首选持久框架的起因

作者 : 开心源码 本文共1598个字,预计阅读时间需要4分钟 发布时间: 2022-05-11 共82人阅读

持久层能将业务数据存储到磁盘,具有长期存储可以力,只需磁盘不损坏(大部分的重要数据都会有相关的备份机制),在断电或者者其余情况下,重新开启系统依然能读取这些数据。一般执行持久任务的都是数据库系统。持久层能用巨大的磁盘空间,也比较廉价,它确实定就是比较慢。

Mybatis成为java互联网时代首选的持久框架

起因:

1.?不屏蔽SQL?,意味着能更准确地定位sql语句,能对其进行优化和改造,这有利于互联网系统性可以的提高,符合互联网需要性可以优化的特点。

2.?提供强大、灵活的映射机制,方便java开发者用。提供动态的sql的功可以,允许我们根据不同条件组装sql,这个功可以远比其余工具或者java编码的可读性和可维护性高的多,满足各种应使用系统的同时也满足了需求经常变化的互联网应使用的要求。

3.?在mybatis中,提供用了Mapper接口编程,只需一个接口和一个XML就可以创立映射器,进一步简化我们的工作,使得很多框架API在mybatis中消失,开发者更集中于业务逻辑。

mybatis核心组件

SqlSessionFactoryBuilder(构造器):它会根据配置或者者代码来生成SqlSessionFactory,采使用的是分布构建的Builder模式。

SqlSessionFactory(工厂接口):依靠它来生成SqlSession,用的是工厂模式。

SqlSession(会话),一个既能发送SQL执行返回结果,也能获取Mapper的接口。在现有技术中,一般我们会让其在业务逻辑代码中“消失”,而用的是 MyBatis 提供的 SQL Mapper 接口编程技术,他可以提高代码的可读性和可维护性。

SQL Mapper(映射器):Mybatis新设计存在的组件,它由一个java接口和XML文件(或者注解)构成,需要给出对应的SQL和映射规则。它负责Sql去执行,并返回结果。

SqlSession

在 Mybatis 中有两个实现类,DefaultSqlSession 和 SqlSessionManager。

DefaultSqlSession是单线程用的

SqlSessionManager是多线程用的。

作使用:

SqlSession的作使用相似于一个JDBC中的 Connection对象,代表着一个连接资源的启使用。

1、获取Mapper接口。

2、发送SQL给数据库。

3、控制数据库事务。

1、创立 SqlSession

SqlSession sqlsession=SqlSessionFactory.openSession();1

2、SqlSession控制数据库事务

//定义SqlSessionSqlSession sqlsession=null;try{ //打开SqlSession会话 sqlsession=SqlSessionFactory.openSession(); //some code … sqlsession.commit();//提交事务}catch(Exception e){ sqlsession.rollback();}finally{ //在finally语句中确保资源被顺利关闭 if(SqlSession!=null) sqlsession.close();}1234567891011121314

映射器

其有一个接口和对应的 xml 文件( 或者注解 )组成。

它能配置如下内容:

形容映射规则

提供SQL语句,并能配置SQL参数类型、返回类型、缓存刷新等信息。

配置缓存

提供动态SQL

映射器的主要作使用就是将 sql 查询到的结果映射为一个 POJO,或者者将 POJO的数据插入到数据库中,并定义少量关于缓存等重要内容

定义一个角色POJO

public class Role{ private Long id; private String roleName; private String note; /*setter and getter*/}

说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » Mybatis成为首选持久框架的起因

发表回复