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

相关文章

  • SpringBoot如何接收数组参数的方法

    下面我将为你详细讲解SpringBoot如何接收数组参数的方法。 方法1:使用@RequestParam注解 在SpringBoot中,我们可以通过@RequestParam注解来接收数组参数。具体操作步骤如下: 1.在Controller中定义接口,使用@RequestParam注解注入数组参数: @GetMapping("/test"…

    Java 2023年5月20日
    00
  • Go语言操作mysql数据库简单例子

    下面我会详细讲解如何用Go语言操作MySQL数据库,并且提供两个简单的示例。 1. 安装Go-MySQL-Driver Go-MySQL-Driver是一个Go语言的MySQL驱动程序,需要首先安装。可以通过以下命令行安装: go get -u github.com/go-sql-driver/mysql 2. 连接数据库 连接到数据库的步骤如下所示: im…

    Java 2023年6月16日
    00
  • Java Properties作为集合三个方法详解

    当我们使用Java进行编程时,经常需要使用配置文件来存储一些关键的配置信息,于是Java提供了一个名为Properties的类来处理这个问题。Properties是一个Map集合,其中的key和value都必须是字符串类型。下面将详细讲解Java Properties作为集合的三个常用方法:getProperty、setProperty和load。 getP…

    Java 2023年6月15日
    00
  • 什么是类加载的生命周期?

    以下是关于类加载的生命周期的详细讲解: 什么是类加载的生命周期? 类加载的生命周期是指从类被加载到内存中开始,到类被卸载出内存为的整个过程。类加载的生命周期包括以下几个阶段: 加载(Loading):将类的字节码加载到内存。 链接(Linking):将类的二进制数据合并到 Java 运行时环境中。 验证(Verification):验证的字节码是否符合 Ja…

    Java 2023年5月12日
    00
  • 利用Springboot+vue实现图片上传至数据库并显示的全过程

    下面是利用Spring Boot和Vue实现图片上传至数据库并显示的全过程。 前置准备 技术栈 Spring Boot Vue.js axios ElementUI MySQL MyBatis 下载代码 可以从GitHub上下载示例代码:https://github.com/KevinPang2019/springboot-vue-image-upload …

    Java 2023年6月1日
    00
  • Java算法之最长公共子序列问题(LCS)实例分析

    Java算法之最长公共子序列问题(LCS)实例分析 算法简介 最长公共子序列(Longest Common Subsequence,LCS)问题是指:给定两个序列X和Y,找出X和Y的最长公共子序列。 例如,若X=a,b,c,b,d,a,b,Y=b,d,c,a,b,a,则X和Y的最长公共子序列为b,c,a,b,长度为4。 算法思想 LCS问题可以使用动态规划的…

    Java 2023年5月19日
    00
  • 解决try-catch捕获异常信息后Spring事务失效的问题

    解决try-catch捕获异常信息后Spring事务失效的问题,需要做以下几个步骤: 1. 开启对事务的支持 将事务注解开启,可以使用在类或方法级别上使用事务注解: @Configuration @EnableTransactionManagement public class AppConfig { // … } 2. 设置事务传播属性 使用@Tran…

    Java 2023年5月25日
    00
  • 老生常谈java中的数组初始化

    下面是关于Java中数组初始化的完整攻略: 数组的定义与声明 在Java中,数组需要先定义后使用。数组的定义语法如下: type[] arrayName; 其中,type 表示数组中元素的数据类型,大括号 [] 表示数组类型,arrayName 是数组的变量名。例如,定义一个整型数组变量的代码如下: int[] nums; 定义好数组变量之后,需要声明数组的…

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