bas
优势
1.简单易学
mybatis本身很小很简单。没有任何第三方依赖,最简单的安装只需要两个jar文件和几个sql映射文件,易学易用。通过文档和源代码,我们可以充分掌握其设计思想和实现。
2.灵活性
mybatis不会对应用程序或数据库的现有设计产生任何影响。sql用xml编写,便于统一管理和优化。通过sql,我们基本上可以实现所有不用数据访问框架就能实现的功能,也许更多。
3.从程序代码中分离sql
通过提供dal层,将业务逻辑和数据访问逻辑分离,使得系统设计更加清晰,更易于维护,更易于单元测试。sql和代码的分离提高了可维护性。
4.提供映射标签,支持对象和数据库之间orm字段关系的映射。
5.提供对象关系映射标签来支持对象关系的建立和维护。
6.提供xml标签,支持动态sql的编写。
劣势
1.写sql语句的时候工作量很大,尤其是有很多字段和关联表的时候。
2.sql语句依赖于数据库,导致数据库的可移植性差,所以数据库无法被替换。
3.框架还是比较简单,功能还是缺失的。虽然简化了数据绑定代码,但是整个底层数据库查询实际上都是自己写的,工作量比较大,不容易适应快速的数据库修改。
4.二级缓存机制不好。
1)读取mybatis配置文件:mybatis-config.xml是mybatis的全局配置文件,配置了mybatis的运行环境等信息,比如数据库连接信息。
2)加载映射文件。映射文件是sql映射文件,其中配置了操作数据库的sql语句,需要加载到mybatis配置文件mybatis-config.xml中mybatis-config.xml文件可以加载多个映射文件,每个文件对应数据库中的一个表。
3)构建会话工厂:通过mybatis等配置信息构建会话工厂sqlsessionfactory。;环境。
4)创建会话对象:通过会话工厂创建sqlsession对象,该对象包含执行sql语句的所有方法。
5)executorexecutor:mybatis定义了一个executor接口来操作数据库,它会根据sqlsession传递的参数动态生成要执行的sql语句,同时还负责维护查询缓存。
6)mappedstatement对象:在executor接口的执行方法中有一个mappedstatement类型的参数,封装了映射信息,用于存储要映射的sql语句的id、参数等信息。
7)输入参数映射:输入参数类型可以是map、list等集合类型,也可以是基本数据类型和pojo类型。输入参数映射过程类似于jdbc;为preparedstatement对象设置参数的过程。
8)输出结果映射:输出结果类型可以是map、list等集合类型,也可以是基本数据类型和pojo类型。输出结果的映射过程类似于jdbc;结果集的解析过程。