基于MyBatis XML配置方法(全面了解)

基于 MyBatis XML 配置方法完整攻略

1. 概述

MyBatis 是一款非常流行的 Java 持久化框架,它将 SQL 语句和 Java 对象之间的映射关系配置在 XML 文件中,极大地简化了数据库访问的开发工作。本文将介绍如何通过 XML 配置方式使用 MyBatis 进行数据库访问。

2. 准备工作

在开始使用 MyBatis 之前,需要进行以下准备工作:

2.1 引入 MyBatis 依赖

在项目的 pom.xml 文件中,引入 MyBatis 的依赖:

<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.5.7</version>
</dependency>

2.2 配置 MyBatis

在项目的 src/main/resources 目录下,创建 mybatis-config.xml 文件。在该文件中,可以配置 MyBatis 的一些全局参数,例如数据库连接池、类型转换器等。

<configuration>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <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="com/example/mybatis/dao/MyBatisMapper.xml"/>
    </mappers>
</configuration>

如上例所示,通过 dataSource 标签配置数据源,在 environment 标签中使用 transactionManager 标签配置事务管理器。最后,通过 mappers 标签指定 MyBatis 映射文件的路径。

3. 使用 MyBatis

3.1 创建数据源和 SQLSessionFactory

在 MyBatis 中,使用 SqlSessionFactory 来创建 SqlSession。SqlSession 是与数据库的一次会话,可以用来执行 SQL 语句。

String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

3.2 定义数据访问对象 (DAO)

在 MyBatis 中,可以通过 XML 配置文件或 Java 注解的方式定义 DAO 对象。在本例中,我们使用 XML 配置文件的方式定义 DAO 接口。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.5//EN"
        "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.mybatis.dao.UserDao">
    <select id="selectUserById" resultType="com.example.mybatis.entity.User">
        SELECT *
        FROM user
        WHERE id = #{id}
    </select>
</mapper>

如上例所示,在 DAO 接口中定义了一条查询语句,通过 XML 配置文件的方式指定 SQL 语句和映射对象。

3.3 使用 DAO 接口

创建 DAO 对象,可以直接注入 SqlSession 对象来进行数据库操作。

SqlSession sqlSession = sessionFactory.openSession();
UserDao userDao = sqlSession.getMapper(UserDao.class);
User user = userDao.selectUserById(1);

4. 示例

4.1 查询 User 对象

public class UserDaoTest {
    private static SqlSessionFactory sessionFactory;
    private static Logger LOGGER = LoggerFactory.getLogger(UserDaoTest.class);
    /**
     * 初始化 SqlSessionFactory
     */
    @BeforeClass
    public static void init() {
        String resource = "mybatis-config.xml";
        try {
            InputStream inputStream = Resources.getResourceAsStream(resource);
            sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        } catch (IOException e) {
            LOGGER.error(e.getMessage(), e);
        }
    }
    @Test
    public void testSelectUserById() {
        SqlSession sqlSession = sessionFactory.openSession();
        try {
            UserDao userDao = sqlSession.getMapper(UserDao.class);
            User user = userDao.selectUserById(1);
            LOGGER.info("user: {}", user);
            assertEquals("张三", user.getUsername());
        } finally {
            sqlSession.close();
        }
    }
}

在 UserDaoTest 类中,创建了 SqlSessionFactory 对象并初始化。在 testSelectUserById 方法中,创建 SqlSession 对象,获取 UserDao 接口实例并通过该接口查询出 User 对象。

4.2 插入 User 对象

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.5//EN"
        "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.mybatis.dao.UserDao">
    <insert id="insertUser" parameterType="com.example.mybatis.entity.User">
        INSERT INTO user (username, password, age)
        VALUES (#{username}, #{password}, #{age})
    </insert>
</mapper>

定义插入 User 对象的 SQL 语句。

public class UserDaoTest {
    private static SqlSessionFactory sessionFactory;
    private static Logger LOGGER = LoggerFactory.getLogger(UserDaoTest.class);
    /**
     * 初始化 SqlSessionFactory
     */
    @BeforeClass
    public static void init() {
        String resource = "mybatis-config.xml";
        try {
            InputStream inputStream = Resources.getResourceAsStream(resource);
            sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        } catch (IOException e) {
            LOGGER.error(e.getMessage(), e);
        }
    }
    @Test
    public void testInsertUser() {
        SqlSession sqlSession = sessionFactory.openSession();
        try {
            UserDao userDao = sqlSession.getMapper(UserDao.class);
            User user = new User("小明", "123456", 18);
            int result = userDao.insertUser(user);
            LOGGER.info("result: {}", result);
            assertTrue(result == 1);
        } finally {
            sqlSession.commit();
            sqlSession.close();
        }
    }
}

创建插入 User 对象的 Unit Test 类,先创建 SqlSession 对象,然后通过 SqlSession 对象获取 UserDao 接口实例。最后,调用 UserDao 的 insertUser 方法,插入 User 对象。在最后必须注意,在执行完之后需要对事务进行提交,避免数据丢失。

5. 总结

XML 配置方式是 MyBatis 中最常用的方式,也是 MyBatis 最为经典的一种使用方式。通过本文的介绍,你已经可以实现简单到复杂的 DAO 对象操作,通过 Unit Test 对 Mybatis 做到轻松测试。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:基于MyBatis XML配置方法(全面了解) - Python技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • struts1之简单mvc示例_动力节点Java学院整理

    介绍 本文将介绍如何使用Struts 1框架通过一个简单的MVC示例进行开发。本示例是基于动力节点Java学院整理的教学资料。 环境准备 在开始开发之前,需要准备好以下环境: Java Development Kit (JDK) 1.8或以上 Eclipse IDE for Java EE Developers Tomcat 8.5或以上 Struts 1.…

    Java 2023年5月20日
    00
  • 使用jdk1.8实现将list根据指定的值去分组的操作

    这里是使用JDK1.8实现将List根据指定的值进行分组的完整攻略。 1. 需求分析 我们要实现将List根据指定的值进行分组,要求在分组结果中,具有相同指定值的元素会被分到同一组中。例如,假设我们有如下的Student类: public class Student { private int id; private String name; private…

    Java 2023年5月26日
    00
  • Java执行JavaScript代码

    下面是Java执行JavaScript代码的完整攻略,包含两条示例说明。 1. 前置知识 在执行JavaScript代码前,需要先了解几个概念: 版本:Java需要使用1.7及以上版本才能支持JavaScript 引擎:Java中通常使用Rhino或Nashorn引擎执行JavaScript代码 接口:Java提供了脚本引擎接口,用于在Java中执行Java…

    Java 2023年5月26日
    00
  • java追加写入txt文件的方法总结

    下面是详细讲解“Java追加写入txt文件的方法总结”的完整攻略。 1. 前言 在Java开发中,我们经常需要将程序的结果或相关数据写入到本地文件中。而在文件操作中,「追加写入」是一个非常重要的操作。相比于「覆盖写入」,追加写入可以在原有文件基础上新增内容,不会破坏已有数据。 2. 追加写入的方法 2.1. 使用FileWriter类 FileWriter类…

    Java 2023年5月19日
    00
  • MyBatis常用动态sql大总结

    “MyBatis常用动态sql大总结”是一篇介绍MyBatis动态SQL的文章,为读者提供了MyBatis动态SQL的基本使用方法和常见应用场景,让读者能够更容易地利用MyBatis实现动态SQL语句的构建。 该文章分为以下几个部分: 简介:介绍MyBatis动态SQL的概念和优势。 基本用法:详细介绍了MyBatis动态SQL的基本使用方法,包括if、ch…

    Java 2023年5月20日
    00
  • Java 8 新特性终极版指南详解

    Java 8 新特性终极版指南详解 Java 8是一个重要的升级版本,它包含了很多新的特性,和细节优化,提高了Java语言的功能和性能。本指南将会介绍Java 8中的几个最重要的新特性。 Lambda 表达式 Java 8 中最引人注目的特性之一是 Lambda 表达式。它可以让开发者以更简洁的方式来编写代码,特别是在集合 (Collection) 的操作方…

    Java 2023年5月24日
    00
  • Java使用jdbc连接实现对MySQL增删改查操作的全过程

    以下是Java使用JDBC连接实现对MySQL增删改查操作的全过程攻略。 第一步:准备工作 1.安装JDK 首先需要安装JDK,下载地址:https://www.oracle.com/technetwork/java/javase/downloads/index.html 2.安装MySQL数据库 下载MySQL数据库并安装,下载地址:https://dev…

    Java 2023年5月19日
    00
  • spring security动态配置url权限的2种实现方法

    下面为您详细讲解“Spring Security动态配置URL权限的2种实现方法”的攻略。 1. 动态配置URL权限简介 Spring Security是用于认证和授权Spring应用程序的框架。在web应用程序中,Spring Security可用于为URL和方法安全添加注释。普通的静态配置会将所有请求都一视同仁地处理。但在一些应用程序中,不同等级的用户可…

    Java 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部