MyBatis是什么

MyBatis是一款持久层框架,支持自定义SQL、存储过程和高级映射。

MyBatis免除所有JDBC代码以及设置参数和获取结果集的工作

MyBatis可以通过简单的XML或注解来配置和映射原始类型、接口和JAVAPOJO为数据库中的记录。

MyBatis优点和缺点

优点:

基于SQL语句编程,相当灵活,不会对程序和数据库造成侵入,通过XML写SQL,sql与代码低耦合,便于统一管理,还可以书写动态SQL语句,便于重用。

与JDBC相比,免除所有JDBC代码设置参数及获取结果的工作,不需要手动链接,消除了大量冗余代码。

兼容性强,因为是靠JDBC链接数据库的,所有JDBC支持的数据库,MyBatis都支持。

完美兼容Spring。

缺点:

SQL编写工作量大,对开发人员SQL功底有一定要求。

迁移性差,SQL语句依赖于数据库

resultType和resultMap得区别
  1. resultType:直接标识返回类型,包括基本类型和复杂数据类型。

resultMap:外部resultMap定义得引用,通过对应的外部resultMap的id,表示结果映射到哪个resultMap上,一般用于字段名和属性名不一致的情况,或者需要做复杂的联合查询以便自由控制映射

结果俩者的关链

当进行查询时,查询出来的每个字段都会放在一个Map里,当查询元素返回属性是resultType的时候,会根据键值对取出value来赋值给指定的属性。其实MyBatis的每个查询映射的返回类型都是resultMap,只是当我们使用resultType的时候,会自动把对应的值赋给所指定的对象属性,当使用resultMap时候,因为map不是很好的表示领域,我们就进一步的转化为对应的实体对象。resultMap主要作用于复杂的联合查询上。

注意:

  1. resultMap和resultType只能同时存在一个。
  2. 当resultType返回的是集合类型,应该写具体集合中元素的类型,不应该返回集合本身。如
List<String> selectAll();
那么xml中resultType返回值应该是resultType="java.util.List"

Q.E.D.


一个热爱生活的95后精神小伙