Mybatis简介
MyBatis是一款优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。
1、Mybatis是一个半ORM(对象关系映射)框架,底层封装了JDBC,是程序员在开发时只需要关注SQL语句本身,不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程。使得程序员可以花更多的精力放到业务开发中。另外,程序员直接编写原生态sql,严格控制sql执行性能,灵活度高。
2、MyBatis可以使用简单的XML文件或注解方式来配置和映射原生信息,将POJO映射成数据库中的记录,避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。
3、通过xml文件或注解的方式将要执行的各种statement配置起来,并通过java对象和statement中sql的动态参数进行映射生成最终执行的sql语句,最后由mybatis框架执行sql并将结果映射为java对象并返回。(从执行sql到返回result的过程)。
Mybaits的优点
1、SQL语句和代码分离
便于统一管理和维护,不必再Java代码中调式SQL语句。但是当SQL语句出错时,控制台不会打印Log,解决办法--引用log4j
2、用标签拼接SQL语句
用标签代替JAVA代码虽然写简单SQL语句时方便了许多,但是复杂的语句拼接难度大。
3、结果集和JAVA对象自动映射
写过hibernate的都知道,hibernate连接数据库生成SQL语句的时候,会自动生成数据库实体类和其映射文件,在mybaits中,它帮我们做了这件事情。但是对数据库的字段要求较高,实体类和配置文件需要手写。
4、即时加载
在一个页面同时显示大量数据时,hibernate的延时加载会创建大量的代理类,消耗资源.mybaits并不通过延时访问数据库。
MyBatis框架的缺点
1、SQL语句的编写工作量较大,尤其当字段多、关联表多时,对开发人员编写SQL语句的功底有一定要求。
2、SQL语句依赖于数据库,导致数据库移植性差,不能随意更换数据库。
MyBatis框架适用场合
1、MyBatis专注于SQL本身,是一个足够灵活的DAO层解决方案。
2、对性能的要求很高,或者需求变化较多的项目,如互联网项目,MyBatis将是不错的选择。
MyBatis与Hibernate的比较
1、两者最大的区别:
针对简单逻辑,Hibernate和MyBatis都有相应的代码生成工具,可以生成简单基本的DAO层方法。
针对高级查询,Mybatis需要手动编写SQL语句,以及ResultMap。而Hibernate有良好的映射机制,开发者无需关心SQL的生成与结果映射,可以更专注于业务流程。
2、开发难度对比
Hibernate的开发难度要大于Mybatis。主要由于Hibernate比较复杂、庞大,学习周期较长。
而Mybatis则相对简单一些,并且Mybatis主要依赖于sql的书写,让开发者感觉更熟悉。
3、sql书写比较
Mybatis的SQL是手动编写的,所以可以按需求指定查询的字段。不过没有自己的日志统计,所以要借助log4j来记录日志。
Hibernate也可以自己写SQL来指定需要查询的字段,但这样就破坏了Hibernate开发的简洁性。不过Hibernate具有自己的日志统计。
4、数据库扩展性比较
Mybatis由于所有SQL都是依赖数据库书写的,所以扩展性,迁移性比较差。
Hibernate与数据库具体的关联都在XML中,所以HQL对具体是用什么数据库并不是很关心。
5、缓存机制比较
相同点:Hibernate和Mybatis的二级缓存除了采用系统默认的缓存机制外,都可以通过实现你自己的缓存或为其他第三方缓存方案,创建适配器来完全覆盖缓存行为。
中培IT学院企业级JAVA高级开发技术实战培训班,将于9月23日在三亚开班,资深专家详细讲解MyBatis架构原理及使用,课程结束由中国信息化培训中心颁发《JAVA高级开发工程师》证书,证书可作为专业技术人员职业能力考核的证明,以及专业技术人员岗位聘用、任职、定级和晋升职务的重要依据。如有对JAVA开发感兴趣的小伙伴快快私信我们吧!