> 文档中心 > MyBatis简介 | MyBatis搭建流程

MyBatis简介 | MyBatis搭建流程

MyBatis

  • 一、MyBatis简介
      • 1、MyBatis 发展历程
      • 2、MyBatis 特性
      • 3、MyBatis 下载
      • 4、MyBatis VS 其他技术
          • 1)JDBC
          • 2)Hibernate 和 JPA
          • 3)MyBatis
  • 二、MyBatis 搭建流程案例
      • 1、项目结构
      • 2、导入依赖
      • 3、创建MyBatis的核心配置文件mybatis-config.xml
      • 4、创建User实体类,对应于数据库的user表
      • 5、创建UserMapper接口
      • 6、创建UserMapper的映射文件
      • 7、测试方法
      • 8、测试结果
      • 9、补充:加入日志功能
          • 1)导入依赖
          • 2)加入log4j的配置文件 log4j.xml

一、MyBatis简介

1、MyBatis 发展历程

  • MyBatis最初是Apache公司的一个开源项目,命名为iBatis。
  • 2010年该开发团队转投到了Google Code旗下,更名为MyBatis。
  • 2013年将开源代码迁移到了Github。

2、MyBatis 特性

  • MyBatis是一个非常优秀的持久层框架,支持定制化 SQL、存储过程和高级映射。
  • MyBatis是一个半自动的ORM框架。
    • ORM (Object Relation Mapping) 对象关系映射。
    • 数据库表 POJO实体类。
  • MyBatis无需手动实现几乎所有的JDBC代码,无需手动设置参数以及手动获取结果集。
  • MyBatis可以使用xml方式开发,也可以使用注解方式开发。

3、MyBatis 下载

  • 在第一部分“MyBatis 发展历程”中提到过在2013年的时候MyBatis将开源代码迁移到了Github中,我们直接去Github中下载即可。
    MyBatis下载

4、MyBatis VS 其他技术

1)JDBC
  • 代码冗长,开发效率低。
  • SQL语句需要写在Java代码中,耦合性高,不易维护。
2)Hibernate 和 JPA
  • 基于全映射的全自动框架,我们无需自己定义SQL方法,需要时直接调用即可(既是优点,同时也是缺点)。操作简便,开发效率高。
  • POJO类中的部分字段映射比较困难。
  • 不支持 长、难、复杂的SQL语句。
3)MyBatis
  • 轻量级框架。
  • 实现了Java代码与SQL语句相分离,Java代码专注于处理业务,SQL语句专注于处理数据。
  • 开发效率较Hibernate 稍低。

二、MyBatis 搭建流程案例

1、项目结构

MyBatis简介 | MyBatis搭建流程

2、导入依赖

<dependencies>        <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.9</version>    </dependency>        <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.28</version>    </dependency>        <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.13.2</version> <scope>test</scope>    </dependency></dependencies>

3、创建MyBatis的核心配置文件mybatis-config.xml

     <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration>        <environments default="development"> <environment id="development">          <transactionManager type="JDBC"></transactionManager>          <dataSource type="POOLED">  <property name="driver" value="${jdbc.driver}"/>  <property name="url" value="${jdbc.url}"/>  <property name="username" value="${jdbc.username}"/>  <property name="password" value="${jdbc.password}"/>     </dataSource> </environment>    </environments>        <mappers> <mapper resource="mappers/UserMapper.xml"></mapper>    </mappers></configuration>
  • 通常情况下,MyBatis的核心配置文件我们都会将其命名为"mybatis-config.xml",也可以使用其他名称。

4、创建User实体类,对应于数据库的user表

public class User {    private Integer id;    private String username;    private Integer age;    private String password;    // 省略构造方法、get和set方法以及toString方法}

对应user表
MyBatis简介 | MyBatis搭建流程

5、创建UserMapper接口

public interface UserMapper {    /     * 添加用户操作     * @return     */    public int insertUser();}

6、创建UserMapper的映射文件

<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="mapper.UserMapper">    <insert id="insertUser"> insert into user values(null,"qdxorigin",22,"123456");    </insert></mapper>
  • 涉及到两个对应关系
    • mapper 接口的全类名与映射文件的 namespace 命名空间保持一致。
    • mapper 接口中的方法名与映射文件中的SQL标签的 id 值保持一致。
  • ORM 对象关系映射
Java概念 数据库概念
属性 字段 / 列
对象 记录 / 行

7、测试方法

public class UserMapperTest {    @Test    public void test1() throws IOException { // 1、读取MyBatis核心配置文件mybatis-config.xml InputStream input = Resources.getResourceAsStream("mybatis-config.xml"); // 2、创建SqlSessionFactoryBuilder对象 SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder(); // 3、创建SqlSessionFactory对象 SqlSessionFactory factory = builder.build(input); // 4、创建sqlSession对象,传入true开启事务自动提交 SqlSession sqlSession = factory.openSession(true); // 5、获取到UserMapper对象 UserMapper mapper = sqlSession.getMapper(UserMapper.class); // 6、测试定义的添加用户方法 int i = mapper.insertUser(); // 7、打印返回值,如果打印1表示添加成功 System.out.println(i);    }}

8、测试结果

1

数据库user表记录
MyBatis简介 | MyBatis搭建流程
成功添加进数据库表中。

9、补充:加入日志功能

1)导入依赖
<dependency>    <groupId>log4j</groupId>    <artifactId>log4j</artifactId>    <version>1.2.12</version></dependency>
2)加入log4j的配置文件 log4j.xml
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"><log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">    <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender"> <param name="Encoding" value="UTF-8" /> <layout class="org.apache.log4j.PatternLayout">     <param name="ConversionPattern" value="%-5p %d{MM-dd HH:mm:ss,SSS} %m (%F:%L) \n" /> </layout>    </appender>    <logger name="java.sql"> <level value="debug" />    </logger>    <logger name="org.apache.ibatis"> <level value="info" />    </logger>    <root> <level value="debug" /> <appender-ref ref="STDOUT" />    </root></log4j:configuration>
  • 需要时直接该段代码导入即可,无需深究。
  • 日志的level级别
    • FATAL(致命) > ERROR(错误) > WARN(警告) > INFO(信息) > DEBUG(调试)
    • FATAL级别最高,打印的内容最少。DEBUG级别最低,打印的东西最多。