SSM框架---Mybatis
来源:互联网 发布:常用办公软件有哪些 编辑:程序博客网 时间:2024/06/04 18:55
1.什么是MyBatis
MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架。MyBatis 消除 了几乎所有的 JDBC 代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的 XML 或注解用于配置和原始映射,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java 对象)映射成数据库中的记录。(类似hibernate)
2.为什么要使用mybaits框架?(开发者使用感想)
1)效率上最优:相比hibernate而言,mybatis的体积如同九牛一毛,加载速度快,运行速度快,极大的提供和程序和数据库之间的交互效率;
2)灵活性最强:mybatis框架的实现是基于开发者对SQL语句的使用,因此开发者可以非常灵活的对SQL语句进行编写和修改已到达需要的结果;
4)功能强大:支持对数据库的所有操作,譬如存储过程,执行pl/sql块等。
3)学习性强:通过对mybaits框架的时候,开发者可以更好更多的结合数据库进行SQL语句的编写,
3.底层实现(如何使用)
深刻理解Mybatis 实现原理再加上学校学习的就可以了,两种配置方法XML配置方法,注释配置方法。
配置方法的底层实现:
通过工厂factory加载带有数据库连接的配置文件,并解析mybatis的映射文件,根据dao层调用的id找到映射文件中的相关的sql语句,并进行对数据库的操作,如果是查询则根据映射文件的resultType和resultMap的配置内容通过反射创建相关对象并进行封装。
注解方法的底层实现:
通过工厂factory加载带有数据库连接的配置文件,加载mapper类,根据dao层调用的id找到mapper类中的相关的方法和sql语句,并进行对数据库的操作,如果是注解描述的内容通过反射创建相关对象并进行封装。
4.Mybatis优缺点。
优点:
1、简单易学
mybatis本身就很小且简单。没有任何第三方依赖,最简单安装只要两个jar文件+配置几个sql映射文件易于学习,易于使用,通过文档和源代码,可以比较完全的掌握它的设计思路和实现。
2、灵活
mybatis不会对应用程序或者数据库的现有设计强加任何影响。 sql写在xml里,便于统一管理和优化。通过sql基本上可以实现我们不使用数据访问框架可以实现的所有功能,或许更多
3、解除sql与程序代码的耦合 通过提供DAL层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易单元测试。sql和代码的分离,提高了可维护性。
4、提供映射标签,支持对象与数据库的orm字段关系映射
5、提供对象关系映射标签,支持对象关系组建维护
6、提供xml标签,支持编写动态sql。
缺点
1. sql工作量很大,尤其是字段多、关联表多时,更是如此。
2. sql依赖于数据库,导致数据库移植性差。
3. 由于xml里标签id必须唯一,导致DAO中方法不支持方法重载。
4. 字段映射标签和对象关系映射标签仅仅是对映射关系的描述,具体实现仍然依赖于sql。(比如配置了一对多Collection标签,如果sql里没有join子表或查询子表的话,查询后返回的对象是不具备对象关系的,即Collection的对象为null)
5. DAO层过于简单,对象组装的工作量较大。
6. 不支持级联更新、级联删除。
7. 编写动态sql时,不方便调试,尤其逻辑复杂时。
8 提供的写动态sql的xml标签功能简单(连struts都比不上),编写动态sql仍然受限,且可读性低。
9. 使用不当,容易导致N+1的sql性能问题。
10. 使用不当,关联查询时容易产生分页bug。
11. 若不查询主键字段,容易造成查询出的对象有“覆盖”现象。
12. 参数的数据类型支持不完善。(如参数为Date类型时,容易报没有get、set方法,需在参数上加@param)
13. 多参数时,使用不方便,功能不够强大。(目前支持的方法有map、对象、注解@param以及默认采用012索引位的方式)
14. 缓存使用不当,容易产生脏数据。总结
mybatis的优点同样是mybatis的缺点,正因为mybatis使用简单,数据的可靠性、完整性的瓶颈便更多依赖于程序员对sql的使用水平上了。sql写在xml里,虽然方便了修改、优化和统一浏览,但可读性很低,调试也非常困难,也非常受限。
mybatis没有hibernate那么强大,但是mybatis最大的优点就是简单小巧易于上手,方便浏览修改sql语句。
5.Mybatis运行原理
原理详解:
MyBatis应用程序根据XML配置文件创建SqlSessionFactory,SqlSessionFactory在根据配置,配置来源于两个地方,一处是配置文件,一处是Java代码的注解,获取一个SqlSession。SqlSession包含了执行sql所需要的所有方法,可以通过SqlSession实例直接运行映射的sql语句,完成对数据的增删改查和事务提交等,用完之后关闭SqlSession
5555555
- SSM框架-MyBatis篇
- SSM框架---Mybatis
- 【SSM-MyBatis框架】MyBatis入门
- 【SSM-MyBatis框架】逆向工程
- SSM框架:SpringMVC + Spring + MyBatis
- ssm框架mybatis打印sql
- 【SSM-MyBatis框架】Spring整合Mybatis
- SSM框架整合( Spring 、 SpringMVC 和 Mybatis )
- SSM框架(Spring SpringMvc Mybatis)流程
- Spring,SpringMVC,Mybatis (SSM)框架的搭建
- SpringMVC+Mybatis框架整合源码 SSM
- springmvc4 mybatis 整合 框架源码 bootstrap SSM
- ssm框架搭建三---mybatis打印sql
- 【SSM-MyBatis框架】SqlMapConfig.xml的配置
- 【SSM-MyBatis框架】关联查询--一对一查询
- ssm框架学习---springmvc和mybatis整合
- ssm(spring+springMVC+Mybatis)框架集成Mongodb
- 【SSM-MyBatis框架】SqlMapConfig.xml的配置
- 移动web首屏优化(二)
- mabitis if 标签对于integer类型数据的处理
- 静态库和动态库创建与区别
- phpstudy linux安装教程
- Android 渐变 LinearGradient RadialGradient SweepGradient
- SSM框架---Mybatis
- 第十五章 单点登录
- 使用inet_pton函数判定ip地址合法性
- 【Matlab转eps】使用Matlab将文件转换成eps
- three.js 05-03 之 ShapeGeometry 几何体
- npm常用命令
- Android 解决启动页面短暂黑屏问题
- ASCII码表
- 第十五周内部排序(2)项目1---(3)冒泡排序