基于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日

相关文章

  • ManyToMany单向、双向:@JoinTable的使用

    ManyToMany 单向使用 @JoinTable 的完整攻略 ManyToMany 单向关系适用于两个实体之间是互相独立的,例如学生可以选择多个课程,而课程也可以被多个学生选择。我们可以使用 @ManyToMany 注解来映射这样的关系。当两个实体之间是互相依赖的,例如 Order 和 Product,我们就需要使用双向 ManyToMany,可以参考第…

    Java 2023年5月20日
    00
  • java编程进阶小白也能手写HashMap代码

    Java编程进阶:小白也能手写HashMap代码 前言 HashMap 是 Java 中常用的数据结构之一,它可以用于键值对存储和快速查找。虽然 Java 提供了 HashMap 的实现,但是手写 HashMap 算是 Java 编程基本功之一。本文将向大家介绍手写 HashMap 的完整攻略。 原理概述 Java 中 HashMap 是由数组和链表构成的,…

    Java 2023年5月26日
    00
  • 日期与时间【Date/SimpleDateFormat/Calendar】

    视频链接:https://www.bilibili.com/video/BV1Cv411372m?p=121&vd_source=9140dcc493e34a9f4e95ca2f8f71bbd3 1 Data 1.1 Date类概述 Date类的对象在java中代表的是当前所在系统的此刻日期时间。 Date的构造器 public Date():创建一…

    Java 2023年5月6日
    00
  • springboot添加https服务器的方法

    关于“springboot添加https服务器的方法”的完整攻略,以下是详细步骤和示例说明: 1.获取https证书 首先需要获取一个https证书。可以通过自己生成证书,也可以通过第三方机构购买证书。这里以通过免费的Let’s Encrypt获取证书为例。以下是获取过程: 安装Certbot客户端 Certbot是Let’s Encrypt官方提供的一个证…

    Java 2023年5月23日
    00
  • java开发https请求ssl不受信任问题解决方法

    Java开发HTTPS请求SSL不受信任问题解决方法 在进行Java开发时,我们经常会涉及到请求HTTPS接口的情况。但是,在请求HTTPS接口时,我们有时会遇到SSL证书不受信任的问题,这会导致我们无法正确进行HTTPS请求。本文将详细讲解如何解决Java开发中HTTPS请求SSL不受信任的问题。 问题描述 在使用Java进行HTTPS请求时,如果SSL证…

    Java 2023年6月15日
    00
  • SpringSecurity自定义登录界面

    在这里我将为您详细讲解SpringSecurity如何自定义登录界面的完整攻略。 1. SpringSecurity简介 SpringSecurity是一个基于Spring框架的安全管理框架,它提供了一套完整的安全控制方案,可以用于Web应用程序和企业级应用程序。 SpringSecurity包括认证(Authentication)、授权(Authoriza…

    Java 2023年5月20日
    00
  • 阿里外包电话面试经历记录

    阿里外包电话面试经历记录攻略 准备材料 在参加阿里外包电话面试之前,需要准备以下材料: 个人简历 阿里云账号 电脑或智能手机等通讯设备 注意事项 提前熟悉阿里巴巴的公司文化、产品、服务等; 如需使用翻译软件,应提前测试并保证其稳定性; 避免私下安排面试时间,应遵循官方约定的面试时间。 面试流程 第一部分:自我介绍 在面试开始时,面试官会让你进行自我介绍。应该…

    Java 2023年6月15日
    00
  • Spring Security整合CAS的示例代码

    下面是我对于Spring Security整合CAS的示例代码的攻略: 前置知识 在开始讲解Spring Security整合CAS的示例代码之前,需要先了解以下几个概念: CAS (Central Authentication Service) CAS是一个单点登录协议,可以让用户在多个Web应用中进行统一认证和授权。对于用户进行登录的请求,CAS服务会将…

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