MyBatis是一个优秀的持久层框架,它支持自定义SQL、存储过程以及高级映射。MyBatis免除了几乎所有的JDBC代码和设置参数以及获取结果集的工作,使得开发者能够更加专注于SQL本身。

MyBatis通过简单的XML或注解来配置和映射原始类型、接口和Java POJO(Plain Old Java Objects,普通老式Java对象)为数据库中的记录。它底层使用的是原生的JDBC代码,对JDBC代码进行了封装。

MyBatis相较于JDBC的优势在于:

  1. 把SQL语句从Java代码中抽取出来,方便维护,并且修改SQL时不用修改Java代码。
  2. 无需手动设置参数和对结果集的处理,使得操作数据库更加简单,大大减少了代码量,提高了开发效率。

此外,MyBatis还有一些其他的特性,如支持事务管理、提供映射标签等。在MyBatis中,可以使用SQL片段来复用SQL片段,提高了SQL的复用性。同时,MyBatis还支持动态SQL,可以根据传入的参数动态生成SQL语句,使得查询更加灵活。

总的来说,MyBatis是一个功能强大的持久层框架,它简化了数据库操作,提高了开发效率,使得开发者能够更加专注于业务逻辑的实现。

我们这次只看(一)里面的的这个类。

BaseMapper<T>

继承了basemapper的dao怎么批量保存_SQL

BaseMapper<T> 继承了 Mapper<T>

Mapper<T>的源码为

继承了basemapper的dao怎么批量保存_spring_02

为什么这里 Mapper<T> 只是一个空的泛型接口。作者定义为顶级Mapper。让其他的接口去继承。其实按照功能来讲,BaseMapper<T> 不继承 Mapper<T> 也是可以的。但为什么多此一举再新增一个顶级接口呢。这里就不得不说这是完全是符合编程思想的。java的编程思想是自顶向下逐步求精,从另外一个方向(逆方向)也可以解析为,java编程是一个不断抽象的过程,抽象到不能再抽象为止。这是一种编程规范。

像这种泛型接口在各种接口设计中无处不在。