1.MyBatis初始

本文介绍了MyBatis框架的基本概念,包括其历史发展、与JDBC的关系,以及在SpringBoot项目中的使用方法,重点讲解了XML映射和Mapper接口的应用。
摘要由CSDN通过智能技术生成

1.1 什么是MyBatis

        MyBatis是一款优秀的持久层框架,它能够帮助Java开发者将业务逻辑与数据访问代码分离,具有简单、灵活和高效的特点。MyBatis使用XML或注解方式描述Java对象及其SQL语句之间的映射关系,它支持多种数据库和操作方式,并且可以满足不同的数据访问需求。

1.2 MyBatis框架发展历史

        MyBatis最初是一个由Clinton Begin在2002年开发的持久层框架,最初的名字是iBATIS(Internet BATIS)。iBATIS的目标是帮助开发人员在Java应用中使用简单的SQL语句实现持久化操作,从而大大降低了应用的开发和维护成本。

        2010年,Google将iBATIS的代码库托管在了Google Code上,并将其更名为MyBatis,以便更易于开发商和用户的记忆和使用。此后,MyBatis不断完善并推出了更多的版本。

        总的来说,MyBatis是一个源于社区、经过不断完善、广泛应用的开源项目。MyBatis凭借其简单易用和高效可靠的特点,成为了Java开发中最受欢迎的持久层框架之一。

1.3 MyBatis与JDBC的关系

        在编程中,高级工具的一个主要作用是提高代码的开发效率。高级工具背后的逻辑是对一组操作进行分析,抽取出其中重复的、不变的部分,封装在一个库中供用户使用,使用户仅需要关注那些变化的部分。

        以JDBC操作为例,横向对比多次数据库访问的代码,开发者会发现,JDBC的标准6步操作中,每次变化的部分是:

  • 每次执行的SQL语句不同,或SQL中绑定的参数不同
  • 对结果集进行操作的逻辑不同

        MyBatis的主要作用是让开发者在编写数据库访问代码时,仅需要关注要执行的SQL语句,参数与SQL的绑定关系以及结果集的处理逻辑,其他部分由MyBatis代为完成。

        MyBatis底层使用的仍是JDBC技术。

1.4 在Spring Boot项目中使用MyBatis框架

                在Java项目中单独使用MyBatis框架的配置较为复杂。在实际开发中,通常使用Spring Boot整合MyBatis框架,由Spring Boot来简化相关配置。

在Spring Boot项目中使用MyBatis框架一般需要如下步骤。

        1、引入MyBatis依赖

        2、在Spring Boot中配置MyBatis框架

        3、编写Mapper接口

  • 使用接口中的抽象方法来声明要执行的数据库操作

        4、编写Mapper.xml映射文件或者在接口中添加注解

  • Mapper.xml文件用于描述Java对象和SQL语句之间的映射关系
  • 简单的SQL语句可以通过在Mapper接口的方法前添加注解来实现

        5、用Mapper接口方法调用映射语句

1.5 MyBatis案例

        本案例基于Maven,在Spring Boot项目中操作。首先,在项目的pom.xml文件中添加对MyBatis框架的依赖。

<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>3.0.2</version>
</dependency>

        然后,在src/main/resources文件夹中新建application.properties文件,该文件是Spring Boot项目的默认配置文件。在该文件中添加项目的配置信息:

# 数据库驱动:

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

# 数据库连接地址

spring.datasource.url=jdbc:mysql://localhost:3306/mybatis

# 数据库用户名&密码:

spring.datasource.username=root

spring.datasource.password=root

#指定Mybatis的Mapper文件

mybatis.mapper-locations=classpath:mappers/*xml

        接下来,在项目中新建mapper包,并在包下创建UserMapper接口,在接口中声明要执行的抽象方法,并添加必要的注解。其中:

  • 【@Mapper】注解用于通知Spring Boot项目,当前接口是一个MyBatis框架使用的接口
  • 【@Select】注解用于绑定该抽象方法执行的SQL语句

        代码示意如下:

import com.obj.entity.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import java.util.List;
@Mapper
public interface UserMapper {
    /**
     * 查询所有用户信息
     * @return
     */
    @Select("select * from user")
    List<User> listAllUser();
}

        接下来,编写listAllUser方法的测试用例,对方法的功能进行验证。这里可以使用IDEA提供的快捷方式来生成测试用例。操作步骤如下:

  • 使用鼠标左键点击UserMapper接口内的任意一行,让光标停留在UserMapper接口的大括号中
  • 点击鼠标右键,在菜单中选择【Generate…】,在子菜单中选择【Test…】
  • 在弹出的对话框中勾选listAllUser方法前的复选框,然后点击【OK】,生成测试用例

  • IDEA会在src/test/java的对应包下生成接口对应的测试类UserMapperTest
import com.obj.entity.User;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.List;
import static org.junit.jupiter.api.Assertions.*;
@SpringBootTest
class UserMapperTest {
    @Autowired
    UserMapper userMapper;
    @Test
    void listAllUser() {
        List<User> list = userMapper.listAllUser();
        list.forEach(System.out::println);
    }
}

        测试用例中代码的逻辑如下:

  • 类前添加的@SpringBootTest注解用于将该类声明为一个基于Spring Boot框架的测试类
  • userMapper变量前添加的@Autowired注解用于通知Spring Boot框架执行MyBatis框架的相关机制,动态生成一个UserMapper接口的实现类的对象,并为userMapper变量赋值
  • listAllUser方法前的@Test注解用于标记该方法为一个测试方法,可以在测试框架构建的环境下执行
  • listAllUser方法中的代码为测试用例实际执行的逻辑,本例中通过调用userMapper接口中的listAllUser方法,查询数据库表中的全部用户信息,并输出到控制台

        开发完成后,点击listAllUser方法前的运行按钮,执行测试方法,查看IDEA的控制台中能否正确输出查询到的结果,效果如下图所示:

  • 17
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhangyan_1010

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值