MyBatis是一款持久层框架,支持自定义SQL、存储过程和高级映射。 MyBatis免除所有JDBC代码以及设置参数和获取结果集的工作 MyBatis可以通过简单的XML或注解来配置和映射原始类型、接口和JAVAPOJO为数据库中的记录。
优点: 基于SQL语句编程,相当灵活,不会对程序和数据库造成侵入,通过XML写SQL,sql与代码低耦合,便于统一管理,还可以书写动态SQL语句,便于重用。 与JDBC相比,免除所有JDBC代码设置参数及获取结果的工作,不需要手动链接,消除了大量冗余代码。 兼容性强,因为是靠JDBC链接数据库的,所有JDBC支持的数据库,MyBatis都支持。 完美兼容Spring。 缺点: SQL编写工作量大,对开发人员SQL功底有一定要求。 迁移性差,SQL语句依赖于数据库
resultMap:外部resultMap定义得引用,通过对应的外部resultMap的id,表示结果映射到哪个resultMap上,一般用于字段名和属性名不一致的情况,或者需要做复杂的联合查询以便自由控制映射
结果俩者的关链
当进行查询时,查询出来的每个字段都会放在一个Map里,当查询元素返回属性是resultType
的时候,会根据键值对取出value来赋值给指定的属性。其实MyBatis
的每个查询映射的返回类型都是resultMap
,只是当我们使用resultType
的时候,会自动把对应的值赋给所指定的对象属性,当使用resultMap
时候,因为map不是很好的表示领域,我们就进一步的转化为对应的实体对象。resultMap
主要作用于复杂的联合查询上。
注意:
List<String> selectAll();
那么xml中resultType返回值应该是resultType="java.util.List"