文章目录
一、MyBatis简介
01、MyBatis是什么?
MyBatis是一个持久层框架,半自动ORM(对象关系映射)框架,支持:定制化SQL、存储过程以及高级映射、MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集,MyBatis可以使用简单的XML或注解类配置和映射原生类型,接口、及其Java的POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
02、ORM是什么?
ORM(Object Relational Mapping),对象关系映射,是一种为了解决关系型数据库与简单Java对象(POJO)的映射关系技术,简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系型数据库中
03、为什么说MyBatis是半自动 ORM映射工具,它与全自动的区别在哪里?
- Hibernate属于全自动ORM映射工具,使用Hibernate查询关联对象(或者)关联集合对象时,可以根据对象关系模型直接获取,所以它是全自动的。
- MyBatis在查询关联对象(或者)关联集合对象时,需要手动编写SQL来完成,所以称之为半自动ORM映射工具。
04、传统JDBC开发存在的问题?
- 频繁创建数据库连接对象、释放、容易造成系统资源浪费,影响系统性能,可以使用连接池解决这个问题,但是使用JDBC需要自己实现连接池。
- SQL语句定义、参数设置、结果集处理存在硬编码,实际项目中SQL语句变化的可能性较大,一旦发生变化,需要修改代码,系统需要重新编译,重新发布,不好维护。
- 使用preparedStatemen向占有位符号传参存在硬编码,因为SQL数据的WHERE条件不一定,可能多也可能少,修改SQL还要修改代码,系统不易维护
- 结果集处理存在重复编码,处理麻烦,如果可以映射成Java对象会比较方便。
05、JDBC编程有哪些不足之处,MyBatis是如何解决这些问题的?
- 数据库连接创建、释放频繁造成系统西苑浪费从而影响系统性能,如果使用数据库连接池可解决此问题。
解决:在mybatis-config.xml中配置数据库连接池,使用连接池管理数据库连接。
- SQL语句写在代码中造成代码不易为维护,实际应用SQL变化的可能较大,SQL变动需要改Java代码。
解决:将SQL语句配置在XXXmapper.xml文件中,与Java代码分离。
- 向SQL语句传参麻烦,因为SQL语句的WHERE条件不一定,可能多也可能少,占位符需要和参数一一对应。
解决:MyBatis自动将Java对象映射至SQL语句
- 对结果集解决麻烦,SQL变化导致解决diamante变化,且解析前需要遍历,如果能将数据记录封装成pojo对象,解决就会比较方便。
解决:MyBatis自动将SQL执行结果映射至Java对象