MyBatis—传统 Dao开发方式分析

Posted 之墨_

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MyBatis—传统 Dao开发方式分析相关的知识,希望对你有一定的参考价值。

搭建MyBatis框架基本步骤

1.导入Maven依赖
2. 创建Dao接口:定义操作数据的方法
3. 创建mapper文件:也叫sql映射文件:用来写sql语句,与接口中的方法相对应的sql语句
4. 创建MyBatis的一个主配置文件:1). 连接数据库 2).指定mapper文件的位置
5. 使用MyBatis的对象SqlSession,通过SqlSession的方法执行sql语句

MyBatis使用传统 Dao 开发方式

使用 Dao 的实现类,操作数据库

创建Maven工程使用MyBatis框架


导入依赖
主要是MyBatis依赖和mysql驱动

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>work01_mybatis_dao</groupId>
  <artifactId>learn</artifactId>
  <version>1.0-SNAPSHOT</version>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>

    <!--MyBatis依赖-->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.9</version>
    </dependency>
    <!--MySQL驱动-->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.5.1</version>
    </dependency>

  </dependencies>

  <build>
    <resources>
    <resource>
      <directory>src/main/java</directory><!--所在的目录-->
      <includes><!--包括目录下的.properties,.xml 文件都会扫描到-->
        <include>**/*.properties</include>
        <include>**/*.xml</include>
      </includes>
      <filtering>false</filtering>
    </resource>
  </resources>
  </build>

</project>

App主要使用MyBatis技术对数据库进行操作,不需要App类,可删除

使用idea创建自己的xml模板

自定义一个xml文件模板

根据自己的文件结构设定namespace、id、resultType

<mapper namespace="work01_mybatis_dao.content.domain.dao.StudentDao">
    <select id="selectStudents" resultType="work01_mybatis_dao.content.domain.Student">

    </select>

namespace:抽象类StudentDao的Reference id:抽象类StudentDao里的方法名
ResultType:方法的返回类型

数据处理的配置文件

主配置文件

数据处理的具体实现

实现—查询MySql数据

编写测试类

MySQL数据库表结构

测试结果

传统 Dao 开发方式的分析

在前面例子中自定义 Dao 接口实现类时发现一个问题:Dao 的实现类其实并没有干什么实质性的工作,它仅仅就是通过 SqlSession 的相关 API 定位到映射文件 mapper 中相应 id 的 SQL 语句,真正对 DB 进行操作的工作其实是由框架通过 mapper
中的 SQL 完成的。 所以,MyBatis 框架就抛开了 Dao 的实现类,直接定位到映射文件 mapper 中的相应 SQL
语句,对DB 进行操作。这种对 Dao 的实现方式称为 Mapper 的动态代理方式。 Mapper 动态代理方式无需程序员实现 Dao
接口。接口是由 MyBatis 结合映射文件自动生成的动态代理实现的

以上是关于MyBatis—传统 Dao开发方式分析的主要内容,如果未能解决你的问题,请参考以下文章

MyBatis-04-笔记

MyBatis-03-笔记

mybatis开发dao的方式

Mybatis初学经验----------------

Mybatis -- MyBatis的Dao层实现(传统方式实现接口代理方式实现)

Mybatis-spring 传统dao开发