1-----Mybaits的原理
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。
简单地说:MyBatis将SQL通过XML来配置,避免了重复的代码来获取数据,提供了简洁化的防注入模式
2------Mybatis的流程
MyBatis通过加载在spring的applicationContext.xml中,初始化连接池的信息,然后调用sqlsessionFactory读取属性配置的xml文件和加载datasource.properties和xxxMapper.xml维护SQL的文件。连接数据库并通过MappedStatement对象读取对应的SQL然后运行!其中属性配置文件,维护了连接的参数,驱动的jar包,需要匹配的对象(扫描),数据库的表等信息!
mybatis底层自定义了Executor执行器接口操作数据库,Executor接口有两个实现,一个是基本执行器、一个是缓存执行器!而执行的内容来自MapperStatement对象!mapper.xml文件中一个sql对应一个MappedStatement对象,sql的id即是MappedStatement的id。MappedStatement对sql执行输入参数进行定义,包括HashMap、基本类型、pojo,Executor通过MappedStatement在执行sql前将输入的java对象映射至sql中,输入参数映射就是JDBC编程中对preparedStatement设置参数。MappedStatement对sql执行输出结果进行定义,包括HashMap、基本类型、pojo,Executor通过MappedStatement在执行sql后将输出结果映射至java对象中,输出结果映射过程相当于JDBC编程中对结果的解析处理过程!
四种类型的文件,插入文件,数据源文件,SQL文件,属性文件,其流程如下:
(图片来自网络)
特点:方便简单,不用写大量代码,并且还可以防止SQL的注入问题