基于MyBatis的数据持久化框架的使用详解

基于 MyBatis 的数据持久化框架的使用详解

什么是 MyBatis

MyBatis 是一种开源的持久化框架,简单地将 SQL 语句与 Java 对象进行映射。它可以轻松地将复杂的 SQL 语句映射到可维护的 Java 对象中。

MyBatis 提供了一些内置工具和插件,可以大大简化开发人员编写持久层代码的工作。

MyBatis 的使用

在使用 MyBatis 之前,首先需要在项目中引入 MyBatis 的依赖。

引入 MyBatis 依赖

可以通过 Maven 来引入 MyBatis 的依赖。在 pom.xml 文件中加入以下依赖即可:

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

配置 MyBatis

MyBatis 的配置文件是一个 XML 文件,可以配置数据源、映射文件等信息。在项目中创建一个 mybatis.xml 文件,加入以下配置:

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

<!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"/>
            <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/mapper/UserMapper.xml"/>
    </mappers>
</configuration>

在这个配置文件中,定义了一个数据源,同时引入了一个映射文件。

创建数据表

在使用 MyBatis 之前,需要先在数据库中创建数据表。可以通过以下 SQL 语句来创建一个用户表:

CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `username` varchar(255) NOT NULL COMMENT '用户名',
  `password` varchar(255) NOT NULL COMMENT '密码',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='用户表';

创建映射文件

MyBatis 的映射文件用于将 SQL 语句与 Java 对象进行映射。可以通过以下方式来创建一个映射文件:

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

<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="com.example.mapper.UserMapper">

    <resultMap type="com.example.entity.User" id="userResultMap">
        <id property="id" column="id"/>
        <result property="username" column="username"/>
        <result property="password" column="password"/>
    </resultMap>

    <select id="getUserById" resultMap="userResultMap">
        SELECT * FROM user WHERE id = #{id}
    </select>

    <insert id="addUser">
        INSERT INTO user(username, password) VALUES(#{username}, #{password})
    </insert>

</mapper>

在映射文件中,定义了一个 UserMapper 接口,并提供了查询用户和新增用户的方法。

创建实体类

创建一个 User 实体类,以便 MyBatis 可以将查询结果映射到 Java 对象上:

public class User {

    private int id;
    private String username;
    private String password;

    // getters and setters
}

使用 MyBatis 进行操作

当所有配置和代码都准备好了之后,就可以使用 MyBatis 进行数据持久化操作了。

在项目中创建一个 UserService 类,并注入 UserMapper:

@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private UserMapper userMapper;

    @Override
    public User getUserById(int id) {
        return userMapper.getUserById(id);
    }

    @Override
    public void addUser(String username, String password) {
        userMapper.addUser(username, password);
    }
}

同时,在 Spring 的配置文件中,需要添加 mapper 扫描的扫描路径:

<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    <property name="basePackage" value="com.example.mapper"/>
</bean>

现在,我们已经可以使用 UserService 来进行数据持久化操作了。例如:

@SpringBootTest
public class UserServiceImplTest {

    @Autowired
    private UserService userService;

    @Test
    void testGetUserById() {
        User user = userService.getUserById(1);
        assertNotNull(user);
        assertEquals("admin", user.getUsername());
        assertEquals("123456", user.getPassword());
    }

    @Test
    void testAddUser() {
        userService.addUser("test", "test123");
        User user = userService.getUserById(2);
        assertNotNull(user);
        assertEquals("test", user.getUsername());
        assertEquals("test123", user.getPassword());
    }
}

示例

下面演示新增一个用户和查询一个用户的代码实现。

示例1:新增一个用户

@Autowired
private UserMapper userMapper;

@Test
void testAddUser() {
    User user = new User();
    user.setUsername("test");
    user.setPassword("123456");
    userMapper.addUser(user);
}

示例2:查询一个用户

@Autowired
private UserMapper userMapper;

@Test
void testGetUserById() {
    User user = userMapper.getUserById(1);
    System.out.println(user);
}

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:基于MyBatis的数据持久化框架的使用详解 - Python技术站

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

相关文章

  • 浅谈一下Java为什么不能使用字符流读取非文本的二进制文件

    标题:浅谈一下Java为什么不能使用字符流读取非文本的二进制文件 在Java中,我们通常使用字节流来处理二进制文件。而字符流主要是用来处理文本文件,因为字符流在读取文本文件时,可以自动将字节转换为字符,而读取二进制文件时,字符流就会出现问题。 一、字符流与字节流的区别 字符流的底层还是使用字节流实现的,但字符流在处理文本时通过Java编码转换器将字节转换为字…

    Java 2023年5月20日
    00
  • Java SimpleDateFormat与System类使用示例详解

    Java SimpleDateFormat与System类使用示例详解 SimpleDateFormat类 SimpleDateFormat是Java中用于格式化和解析日期的类,可以将日期转换为指定格式的字符串,也可以将指定格式的字符串转换为日期对象。 格式化日期 以下是一个将日期格式化为指定格式字符串的示例: import java.text.Simple…

    Java 2023年5月20日
    00
  • 2种Java删除ArrayList中的重复元素的方法

    当我们使用ArrayList集合存储元素时,有时候需要删除其中的重复元素。为此我们需要使用一些适当的方法。以下是两种Java删除ArrayList中重复元素的方法: 方法一: 使用LinkedHashSet 借助LinkedHashSet的特性,我们可以很容易实现重复元素的删除。该方法具体分为以下步骤: 创建一个ArrayList对象并添加需要删除重复元素的…

    Java 2023年6月15日
    00
  • java自动生成编号的实现(格式:yyMM+四位流水号)

    Java自动生成编号的实现,通常需要考虑到以下几个方面: 记录上一个流水号。 根据当前时间生成编号的前缀(yyMM)。 每次生成编号时自增流水号,如果流水号超出限定位数则将其归零并增加前缀的年月数。 将新编号保存在数据库中。 下面是一个完整的代码示例和实现攻略。 1. 定义实体类 首先定义一个实体类,包含自动生成编号所需的属性和setter/getter方法…

    Java 2023年5月30日
    00
  • IntelliJ IDEA 2020.2 配置大全详细图文教程(更新中)

    以下是“IntelliJ IDEA 2020.2 配置大全详细图文教程(更新中)”的完整攻略: 1. 安装 IntelliJ IDEA 在官网下载好安装包后,根据提示一步步进行安装。 2. 配置 JDK IntelliJ IDEA 需要配置 JDK 才能运行 Java 代码。我们需要先下载并安装 JDK,然后在 IntelliJ IDEA 中进行配置。 下载…

    Java 2023年5月20日
    00
  • JavaWeb Hibernate使用全面介绍

    JavaWeb Hibernate使用全面介绍 什么是Hibernate Hibernate 是一个开源的对象关系映射框架,它对 JDBC 进行了非常轻量级的对象封装,它将 POJO 与数据库表建立映射关系,是一个全自动的 ORM 框架。 Hibernate的优势 具有很好的对象关系映射功能,减少了数据访问层的编码工作量; 支持普通的 SQL 查询,无需操心…

    Java 2023年5月31日
    00
  • Java中List的使用方法简单介绍

    让我根据题目的要求给大家介绍一下Java中List的使用方法。 什么是List List是Java中一个常用的接口,它继承于Collection接口,表示一个有序(即列表)、可重复的元素集合。List中的每个元素都有其唯一的索引值,能够通过索引值来访问和修改元素。 List接口是一个泛型接口,可以定义存储不同类型元素的List集合。常见的List实现类有Ar…

    Java 2023年5月26日
    00
  • quartz时间表达式Cron详解

    Quartz 时间表达式 Cron 详解 1. Cron 表达式语法 Cron 表达式是一个字符串,包含了六个时间元素和一个可选的第七个元素,决定了任务的触发时间。每个时间元素以空格分隔,格式为: 秒(0~59) 分钟(0~59) 小时(0~23) 日(1~31) 月(1~12) 星期(0~7) 其中星期可以使用数字(0~7)来表示,也可以使用英文缩写(SU…

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