Mybatis(一):Mybatis是什么
2020-04-02 16:02:44来源:博客园 阅读 ()
Mybatis(一):Mybatis是什么
-
Mybatis是一个优秀的持久层框架,它对JDBC操作数据库的过程进行封装,使开发者只需要关注sql本身。
-
我们原来使用JDBC操作数据库,需要手动的写代码去注册驱动、获取connection、获取statement等等,现在Mybaits帮助我们把这些事情做了,我们只需要关注我们的业务sql即可,这样可以提高我们的开发效率。
-
二、Mybatis架构
-
SqlMapConfig.xml
-
SqlMapConfig.xml文件是Mybatis的全局配置文件,配置了Mybatis的运行环境等信息
-
-
Mapper.xml
-
Mapper.xml文件即sql映射文件,文件中配置了操作数据库的sql语句。此文件需要在SqlMapConfig.xml文件中配置加载
-
-
SqlSessionFacory
-
通过SqlMapConfig.xml文件里面的环境配置信息构造SqlSessionFactory会话工厂,用来生产和管理SqlSession
-
-
SqlSsession
-
由SqlSessionFactory工厂创建SqlSession会话对象,SqlSession用来操作数据库
-
-
Executor
-
MyBatis底层自定义了Executor执行器接口操作数据库,Executor接口有两个实现,一个基本执行器,一个缓存执行器
-
我们前期学习MyBatis暂时不用关注这个
-
-
MappedStatement
-
MappedStatement也是MyBatis的一个底层封装对象,它包装了MyBatis配置信息及sql映射信息等。
-
Mapper.xml中一个sql对应一个MappedStatement对象,sql的id即是MappedStatement的id
-
这个暂时不用关注
-
-
输入映射
-
输入映射我们可以理解为执行sql语句所需的参数
-
-
输出映射
-
输出映射指的是操作数据库之后返回的结果
-
三、Mybatis对比JDBC的优点
-
我们先看一下JDBC操作数据库的大致流程:
-
1.加载数据库驱动
-
2.创建并获取数据库连接对象connection
-
3.通过连接对象获取会话对象statement
-
4.编写sql语句
-
5.如果有参数的话需要通过PreparedStatement设置参数
-
5.执行sql语句并获取结果
-
6.关闭资源
-
-
上述是最原始的JDBC操作数据库的方式,有以下问题:
-
数据库连接的频繁创建、释放浪费资源进而影响系统性能,如果使用数据库连接池的话可以解决此问题
-
Sql语句写在代码中,代码不易维护。如果在开发过程中我们改动某个sql,就需要去修改java代码,改完之后还需要重新编译。
-
对结果集的解析也是硬编码,sql变化会导致解析结果的代码也跟着变化,系统不易维护
-
-
使用MyBatis
-
MyBatis会帮我们把加载驱动、获取连接等过程进行封装,我们不再需要关注这些,只需要关注业务逻辑本身的sql即可,提高开发效率
-
转载请注明出处:https://www.cnblogs.com/Infancy/p/12621345.html
原文链接:https://www.cnblogs.com/Infancy/p/12621345.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- MyBatis中的$和#,用不好,准备走人! 2020-06-11
- SpringBoot 2.3 整合最新版 ShardingJdbc + Druid + MyBatis 2020-06-11
- 天哪!手动编写mybatis雏形竟然这么简单 2020-06-06
- MyBatis整合双数据源 2020-06-04
- MyBatis缓存特性详解 2020-06-03
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash