Mybatis知识整理(一)Mybatis初探
2018-03-28 21:32
429 查看
Mybatis是一款优秀的持久层框架,专注于sql本身。是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。相比于原始的iBatis,提供了代理开发的新型模式。mybatis和hibernate本质区别和应用场景对比如下:
hibernate:是一个标准ORM框架(对象关系映射)。入门门槛较高的,不需要程序写sql,sql语句自动生成了。 对sql语句进行优化、修改比较困难的。应用场景: 适用与需求变化不多的中小型项目,比如:后台管理系统,erp、orm、oa。。
mybatis:专注是sql本身,需要程序员自己编写sql语句,sql修改、优化比较方便。mybatis是一个不完全的ORM框架,虽然程序员自己写sql,mybatis 也可以实现映射(输入映射、输出映射)。应用场景: 适用与需求变化较多的项目,比如:互联网项目。企业进行技术选型,以低成本 高回报作为技术选型的原则,根据项目组的技术力量进行选择。原生态的JDBC开发过中存在以下缺点:
1、数据库连接,使用时就创建,不使用立即释放,对数据库进行频繁连接开启和关闭,造成数据库资源浪费,影响数据库性能。
设想:使用数据库连接池管理数据库连接。
2、将sql语句硬编码到java代码中,如果sql 语句修改,需要重新编译java代码,不利于系统维护。 设想:将sql语句配置在xml配置文件中,即使sql变化,不需要对java代码进行重新编译。
3、向preparedStatement中设置参数,对占位符号位置和设置参数值,硬编码在java代码中,不利于系统维护。 设想:将sql语句及占位符号和参数全部配置在xml中。
4、从resutSet中遍历结果集数据时,存在硬编码,将获取表的字段进行硬编码,,不利于系统维护。设想:将查询的结果集,自动映射成java对象。
Mybatis的原理架构如下所示:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201803/96f6ff920cc58997995eada8f025be74)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201803/d13ad1e1bf82d6c124ab10e7cee20903)
hibernate:是一个标准ORM框架(对象关系映射)。入门门槛较高的,不需要程序写sql,sql语句自动生成了。 对sql语句进行优化、修改比较困难的。应用场景: 适用与需求变化不多的中小型项目,比如:后台管理系统,erp、orm、oa。。
mybatis:专注是sql本身,需要程序员自己编写sql语句,sql修改、优化比较方便。mybatis是一个不完全的ORM框架,虽然程序员自己写sql,mybatis 也可以实现映射(输入映射、输出映射)。应用场景: 适用与需求变化较多的项目,比如:互联网项目。企业进行技术选型,以低成本 高回报作为技术选型的原则,根据项目组的技术力量进行选择。原生态的JDBC开发过中存在以下缺点:
1、数据库连接,使用时就创建,不使用立即释放,对数据库进行频繁连接开启和关闭,造成数据库资源浪费,影响数据库性能。
设想:使用数据库连接池管理数据库连接。
2、将sql语句硬编码到java代码中,如果sql 语句修改,需要重新编译java代码,不利于系统维护。 设想:将sql语句配置在xml配置文件中,即使sql变化,不需要对java代码进行重新编译。
3、向preparedStatement中设置参数,对占位符号位置和设置参数值,硬编码在java代码中,不利于系统维护。 设想:将sql语句及占位符号和参数全部配置在xml中。
4、从resutSet中遍历结果集数据时,存在硬编码,将获取表的字段进行硬编码,,不利于系统维护。设想:将查询的结果集,自动映射成java对象。
Mybatis的原理架构如下所示:
相关文章推荐
- Mybatis知识整理(七)Mybatis之输出映射
- Mybatis知识整理(十二)Mybatis完结之与Spring整合
- Mybatis知识整理(十)Mybatis之延迟加载
- Mybatis知识整理(二)Mybatis实现简单的增删改查
- Mybatis知识整理(四)Mybatis进行Mapper代理开发
- Mybatis知识整理( 九)Mybatis之高级映射
- Mybatis知识整理(六)Mybatis之输入映射
- Mybatis知识整理(三)Mybatis原始dao开发
- Mybatis知识整理(十一)Mybatis之缓存
- Mybatis知识整理( 八)Mybatis之动态SQL
- C++知识要点整理01:数组 内/外部成员
- Web Service 接口测试知识(整理)
- Android知识整理总结(三)
- C++核心知识点整理——基础知识
- C++核心知识整理——标准库和oop
- 手机操作系统知识整理(二):Android UID 机制
- 各种基础知识点整理(Java向)
- JAVA基础知识整理记录
- C#基础知识整理:.NET知识
- Mybatis【逆向工程,缓存,代理】知识要点