MyBatis理解与掌握(简介)
@(MyBatis)[Java, 框架, MyBatis]
简介
Mybatis是一个数据持久层框架,MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis使用简单的XML或者注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录通过一系列的XML配置文件,解耦了对象和存储过程/SQL语句。
因为MyBatis面向的是SQL,所以有时也称之为SQL映射器
与JDBC比较
(1)数据库连接创建、释放频繁造成系统资源浪费 从而影响系统性能,如果使用数据库连接池可解决此问题。
解决:在mybatis-config.xml中配置了数据连接池,方便使用了连接池管理数据库链接。
(2)Sql语句在代码中硬编码 ,造成代码不易于维护,实际应用sql变化的可能较大,sql变动需要改变Java代码。
解决:将Sql语句配置在映射文件(xxxmapper.xml)中,实现sql语句和Java代码的分离。
(3)使用preparedStatement向占有位符号传参数存在硬编码 ,因为sql语句的where条件不一定,可能多也可能少,修改sql还需要修改代码,系统不易于维护。
解决:Mybatis自动将Java对象映射至sql语句,通过statement中的parameterType定义输入参数类型。
(4)对结果集解析存在硬编码 (查询列名),sql变化导致解析代码变化,系统不易于维护,如果能将数据库记录封装成pojo对象解析比较方便。
解决:Mybatis自动将sql执行结果映射至Java对象,通过statement中的resultType定义输出结果的类型。
与Hibernate比较
Mybatis学习门槛低, 简单易学 ,程序员直接编写原生态sql,可严格控制sql执行性能, 灵活度高 ,非常适合对关系数据模型要求不高的软件开发,例如互联网软件、企业运营类软件等,因为这类软件需求变化频繁,一旦需求变化要求成果输出迅速。
但是Mybatis 无法做到数据库无关性 ,如果需要实现支持多种数据库的软件则需要自定义多套sql映射文件,工作量大。
Hibernate 对象/关系映射能力强 ,数据库无关性好 ,对于关系模型要求高的软件(例如需求固定的定制化软件)如果用Hibernate开发可以节省很多代码,提高效率。但是Hibernate 学习门槛高,要精通门槛更高,而且怎么设计O/R映射,在性能和对象模型之间如何权衡,以及怎么用好Hibernate需要具有很强的经验和能力才行。
总之,按照用户的需求在有限的资源环境下只能做出威化扩展性良好的软件架构都是好架构,所以框架只有适合才是最好的。
配置文件区别:
-
hibernate:
- 主配置文件:数据库连接信息,方言,映射文件信息
- 实体类配置文件:类和表之间的映射关系
-
Mybatis:
- 主配置文件:数据库连接信息,映射文件信息
- SQL映射文件:将执行的SQL进行关联映射
Mybatis和Hibernate不同,它不完全是一个ORM框架,因为Mybatis需要程序员自己编写sql语句,不过Mybatis可以通过xml或注解方式灵活配置要运行的sql语句,并将Java对象和sql语句映射生成最终执行的sql,最后将sql执行的结果再映射生成Java对象
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。