MyBatis概述
MyBatis的前身是Apache公司的ibits
首先我们先来分析: 原始的JDBC开发存在的问题:(如下)
-
数据库连接,创建, 释放频繁造成系统资源浪费而影响系统性能
-
sql语句在代码中采用的是硬编码的形式, 造成代码不易维护, 实际应用中sql变化可能较大, sql变动需要改变java代码
- 其实就是SQL语句和java代码耦合到了一起
-
查询操作时,需要手动的将结果集中的数据手动封装到实体中, 执行各种sql操作时需要手动将实体的数据设置到sql语句的占位符位置
那么上面的问题我们要如何进行解决?
-
对于频繁的数据库连接, 创建, 释放造成系统资源的浪费, 我们首先能想到的就是使用池化的思想:(就是使用数据库连接池)
-
对于sql语句变动之后要修改java代码, 其实就是sql和java代码是耦合到一起的, 所以我们就要进行sql和java代码的解耦
- 对于这种情况我们常用的解耦方式就是: 使用XML配置文件
- 我们可以将sql语句抽取到XML配置文件中, 从而实现解耦
- 对于这种情况我们常用的解耦方式就是: 使用XML配置文件
-
需要手动将结果集中返回的数据封装到对应的实体中, 很麻烦
- 所以我们就可以将这个操作使用反射, 内省等操作实现, 实现之后进行一个封装, 使得表与实体之间可以自动映射
小结: 应对上述问题给出的解决方案:
- 使用数据库连接池初始化连接资源
- 将sql语句抽取到xml配置文件中
- 使用反射,内省等技术, 自动将实体与表进行属性与字段的自动映射
所以针对上述问题我们就提出了MyBatis框架,MyBatis框架可以很好的解决上述的问题
什么是MyBatis框架?
-
MyBaits是一个优秀的基于Java的持久层框架, 它内部封装了JDBC, 使得开发者只需要关注sql语句本身, 而不需要花费精力去加载驱动, 创建连接, 创建Statement等繁杂的过程
-
MyBatis通过xml或注解的方式将要执行的各种Statement配置起来, 并通过Java对象和Statement中sql的动态参数进行映射生成最终执行的sql语句
-
最后MyBatis框架执行sql并将结果映射为Java对象并返回