【MyBatis】MyBatis 基础搭建及架构概述

【MyBatis】MyBatis 基础搭建及架构概述_第1张图片

1.概述

转载:MyBatis 基础搭建及架构概述

2.MyBatis 是什么?

MyBatis是第一个支持自定义SQL、存储过程和高级映射的类持久框架。MyBatis消除了大部分JDBC的样板代码、手动设置参数以及检索结果。MyBatis能够支持简单的XML和注解配置规则。使Map接口和POJO类映射到数据库字段和记录。

下面我们通过一个简单的项目搭建来带你认识一下MyBatis的使用和一些核心组件的讲解。

3.MyBatis 项目构建

为了快速构建一个MyBatis项目,我们采用SpringBoot快速搭建的方式。搭建好后在对应的pom.xml下添加如下的maven依赖,主要作用在于引入mybatis一些jar包和类库

主要分为四个步骤:

快速构建项目,引入核心maven dependency依赖
构建POJO类和接口式编程的 Mapper类,编写SQL语句
编写config.properties数据库驱动等配置
构建Mybatis核心配置文件即mybatis-config.xml,引入数据库驱动,映射Mapper类
编写Junit单元测试类
<!-- mybatis 核心依赖-->
<dependency>
  <groupId>org.mybatis</groupId>
  <artifactId>mybatis</artifactId>
  <version>3.4.6</version>
</dependency>
<!-- 数据库驱动包 -->
<dependency>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
  <version>5.1.25</version>
</dependency>
<!-- 单元测试包-->
<dependency>
  <groupId>junit</groupId>
  <artifactId>junit</artifactId>
  <version>4.12</version>
  <scope>test</scope>
</dependency>

为了便于更好的说明文章的主旨,这里就不贴出全部代码了,会贴出核心代码部分

编写对应的POJO类和接口式编程Mapper类,这里我们以部门业务逻辑为例,构建一个部门类,有三个属性即部门编号、部门名称、位置,下面是部分代码:

package com.mybatis.beans;
public class Dept {
  
    private Integer deptNo;
    private String  dname;
    private String  loc;
  
    public Dept() {}
    public Dept(Integer deptNo, String dname, String loc) {
        this.deptNo = deptNo;
        this.dname = dname;
        this.loc = loc;
    }
		get and set...
}

MyBatis最核心的功能之一就是接口式编程,它可以让我们编写Mapper接口和XML文件,从而把参数和返回结果映射到对应的字段中。

package com.mybatis.dao;
public interface DeptDao {

  	// 通过部门名称查询
    public Dept findByDname(String Dname);
  	// 通过部门编号查询
    public Dept findByDeptNo(Integer deptno);
}

在/resources 下新建com.mybatis.dao 包,在其内编写对应的XML配置文件,此XML配置文件和Mapper互为映射关系。

<mapper namespace="com.mybatis.dao.DeptDao" >

    <sql id="DeptFindSql">
     select * from dept
  	</sql>
  
    <select id="findByDeptNo" resultType="com.mybatis.beans.Dept">
        <include refid="DeptFindSql"></include>
        where deptno = #{deptNo}
    </select>

    <select id="findByDname" resultType="com.mybatis.beans.Dept">
        <include refid="DeptFindSql"></include>
        where dname = #{dname}
    </select>

</mapper>

上述的 就是映射到Mapper接口类的命名空间