一、MyBatis 介绍 MyBatis 是一个优秀的基于 Java 的持久层框架(是一个DAO层的框架),它内部封装了 JDBC,使开发者只需要关注 sql 语句本身,而不需要花费精力去处理加载驱动、创建连接、创建 statement 等繁杂的过程。
MyBatis 通过 xml 或注解的方式将要执行的各种 statement 配置起来,并通过 Java 对象和 statement 中 sql 的动态参数进行映射生成最终执行的 sql 语句。最后 MyBatis 框架执行 sql 并将结果映射为 Java 对象并返回。
MyBatis 的过去: MyBatis本是apache的一个开源项目iBatis,2010年这个项目由apache software foundation迁移到了google code ,并且改名为MyBatis。2013年11月迁移到Github。
名字由来:iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAOs)。
优点: 采用 ORM 思想解决了实体和数据库映射的问题,对 JDBC 进行了封装,屏蔽了 JDBC API 底层访问细节,使我们不用与 JDBC API 打交道,就可以完成对数据库的持久化操作。
二、入门 MyBatis 前面的介绍我们提到了DAO层、JDBC、sql语句本身、映射等。下面来简单说说使用 MyBatis 的六大步骤:
① 添加 MyBatis 的坐标
② 创建 user 数据表
③ 编写 User 实体类
④ 编写映射文件 UserMapper.xml
⑤ 编写核心配置文件 SqlMapConfig.xml
⑥ 编写 DAO 层,使用动态代理实现
第①步中的“坐标”就相当于是在引入jar包,假设我们是用 Maven 进行的开发,那么可以在 pox.xml 文件中写你需要的 MyBatis 依赖,示例如下:
<dependencies>
……
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.5</version>
</dependency>
……
</dependencies>
第②、③步创建数据表和实体类不用多说。
第④步提到了映射文件:UserMapper.xml,该文件的名字一般由实体类+Mapper组成,文件里面是sql语句,相当于 DAO 层接口的实现类。但这个文件的存放位置有点讲究,它在resource目录下的某个包里,这个包名必须跟实体类的包名同步,举例说明,实体类 User.java 放在 com..domain 下,那么映射文件 UserMapper.xml 的包名得是 com..mapper 。映射文件中的sql语句的参数不再用?做占位符了,写法变为 #{实体类属性名} 。
第⑤步是编写核心配置文件:SqlMapConfig.xml,里面是数据库连接的四要素、事务管理器等。它直接放在resource目录下即可。
第⑥步编写DAO层接口,并使用动态代理的方式编写测试类,有四个点需要注意:
1、映射文件中的namespace与接口类的全限定名相同;
2、接口类中的方法名要和映射文件中定义的每个sql的id值相同;
3、接口类中的方法的输入参数类型要和映射文件中定义的每个sql的parameterType的类型相同;4、接口类中的方法的输出参数类型要和mapper.xml中定义的每个sql的resultType的类型相同。