springboot使用Mybatis(xml和注解)过程全解析

以下是对"springboot使用Mybatis(xml和注解)过程全解析"的详细讲解:

一、前言

Mybatis是一款优秀的基于Java的持久化框架,它拥有非常高灵活性,除了能够适配各种传统的数据库,还能够适应各种数据源甚至于比较小众的数据存储方式。而SpringBoot则是近些年最火热的Web框架之一,它的主打特点在于快速集成,可以让Java项目开发人员更加专注于业务开发而将底层框架的细节和繁琐配置让SpringBoot帮忙处理。

这份攻略旨在让初学者通过简明易懂的方式了解如何使用Mybatis来完成数据库的操作,同时,结合SpringBoot特点给出一些方便易用的解决方案。

二、环境搭建

  • 开发工具:IntelliJ IDEA
  • SpringBoot版本:2.xx
  • Mybatis版本:3.xx
  • 数据库:MySQL

在开始之前,建议事先创建好数据库表,并配置好数据库的连接信息。

  1. 使用SpringBoot的Initializr来创建一个项目
  2. 在项目的pom.xml引入以下依赖:
<!--引入Spring相关依赖-->
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <!--引入MyBatis相关依赖-->
    <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>1.3.2</version>
    </dependency>

    <!--引入数据库连接池相关依赖-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-jdbc</artifactId>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <scope>runtime</scope>
    </dependency>

    <!--引入测试相关依赖-->
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>
  1. 配置数据源和MyBatis的基本信息
# 数据源配置
spring.datasource.url = jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false
spring.datasource.username = root
spring.datasource.password = root
spring.datasource.driverClassName = com.mysql.cj.jdbc.Driver

# MyBatis 配置
mybatis.mapper-locations=classpath:mapper/*.xml # xml文件存放路径,可以不需要
mybatis.type-aliases-package=com.example.demo.entity # 实体类所在包路径
  1. 配置Mapper扫描路径

在启动类中增加如下配置:

@SpringBootApplication
@MapperScan("com.example.demo.mapper")
public class DemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}

在本例中,mapper接口存放的陆地为com.example.demo.mapper,这里的注解就是告诉SpringBoot将这个包下与Mapper有关的bean的注入交给Mybatis来处理。

三、使用Mybatis注解方式完成数据库查询

Mybatis的注解方式相较于XML方式,更加简洁,易于使用,也比较容易理解。

以查询user表中userId=1的所有数据为例,我们可以这样做:

  1. 先创建一个UserMapper接口,并在里面定义一个查询操作方法:
import com.example.demo.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 WHERE userId = 1")
    List<User> selectUserByUserId();
}
  1. 在UserMapper所在包路径下,创建一个User类来封装查询之后获得的数据:
public class User {
    private Integer userId;
    private String userName;
    private Integer userAge;
    private Integer userGender;
    //省略setter和getter方法
}
  1. 在controller层调用Mapper中的方法并返回结果
@RestController
public class UserController {

    @Autowired
    private UserMapper userMapper;

    @GetMapping("/user")
    public List<User> getUser() {
        return userMapper.selectUserByUserId();
    }
}

完成上述步骤之后,启动应用,访问地址http://localhost:8080/user,可以成功从数据库中查询到相应的数据并返回。

四、使用Mybatis xml方式完成数据库操作

Mybatis最早版本的持久化方法是使用xml的方式定义SQL语句,这种方式相较于注解方式,更加稳定,适用于复杂场景。

还是以User表为例,查询所有数据,我们可以这样做:

  1. 在resources目录下创建一个文件夹mapper,并创建UserMapper.xml文件,将查询操作定义在该xml中:
<?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.demo.mapper.UserMapper">
    <select id="selectUserAll" resultType="com.example.demo.entity.User">
        SELECT * FROM user
    </select>
</mapper>
  1. 修改UserMapper接口,并将操作方法对应的SQL语句定义在xml文件中:
import com.example.demo.entity.User;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

@Mapper
public interface UserMapper {

    /**
     * 查询所有用户信息
     * @return
     */
    List<User> selectUserAll();
}
  1. 在application.properties中增加mapper文件的相对路径:
# mybatis相关配置
mybatis.mapper-locations=classpath:mapper/*.xml
  1. 在controller层调用Mapper中的方法并返回结果
@RestController
public class UserController {

    @Autowired
    private UserMapper userMapper;

    @GetMapping("/user")
    public List<User> getUserAll() {
        return userMapper.selectUserAll();
    }
}

这里需要注意,因为UserMapper中包含了两种定义方式,我们将查询所有数据的方法名修改了一下,以保证不与之前冲突。

完成上述步骤之后,启动应用,访问地址http://localhost:8080/user,即可成功从数据库中查询到所有数据并返回。

五、总结

Mybatis作为持久层框架之一,具有非常广泛的使用场景。SpringBoot则是当前最受欢迎的Java Web框架之一,它能够让我们更加专注于项目的业务逻辑,而将底层框架的细节看作是自己代码中的一部分。结合二者的优势,我们能够快速开发出健壮、高性能的Web应用。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:springboot使用Mybatis(xml和注解)过程全解析 - Python技术站

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

相关文章

  • 在dom4j中使用XPath的简单实例

    在dom4j中使用XPath可以方便地对XML文档中的数据进行定位和获取。下面是在dom4j中使用XPath的简单实例: 准备工作 在正式开始之前,需要先引入dom4j和junit的相关依赖,如果是Maven项目,可以在pom.xml文件中添加以下代码: <dependency> <groupId>org.dom4j</grou…

    html 2023年5月31日
    00
  • MyBatis中criteria的or(或查询)语法说明

    首先,MyBatis中的criteria是用于构造SQL语句的查询条件的一种方式。其中,or语法可以使查询条件在多个条件之间取或(或者)的关系。具体用法如下: 1. or语法示例一 Example example = new Example(User.class); Example.Criteria criteria = example.createCrit…

    html 2023年5月30日
    00
  • asp.net中javascript与后台c#交互

    关于“asp.net中javascript与后台c#交互”的攻略,首先我们需要了解两种交互方式,一种是基于页面回传(postback)的交互方式,另一种是基于ajax的交互方式。 基于页面回传的交互 页面回传(postback)是指用户提交表单数据后,服务器在处理完这些数据后重新加载了整个页面,这种方式下,页面中可以直接调用后台c#的方法,并传递参数。 实例…

    html 2023年5月30日
    00
  • Excel VBA怎么使用字典Dictionary对象的通用代码?

    以下是“Excel VBA怎么使用字典Dictionary对象的通用代码?”的完整攻略: Excel VBA怎么使用字典Dictionary对象的通用代码? 在Excel VBA中,字典Dictionary对象是一种非常有用的数据结构,它可以用于存储键值对,并且可以快速地查找和访问数据。下面是使用字典Dictionary对象的通用代码: 创建字典Dictio…

    html 2023年5月18日
    00
  • PHP基于SimpleXML生成和解析xml的方法示例

    下面是关于“PHP基于SimpleXML生成和解析xml的方法示例”的完整攻略。 什么是SimpleXML SimpleXML是一个PHP扩展模块,可以用来生成和解析XML数据。它可以将XML格式的字符串转换成一个对象(或数组),方便我们对XML进行操作。 使用方法 生成XML数据 使用SimpleXML生成XML数据的方法非常简单,首先需要使用Simple…

    html 2023年5月30日
    00
  • iOS中解决Xcode 8控制台乱码的方式

    以下是iOS中解决Xcode 8控制台乱码的方式的完整攻略。 问题描述 在Xcode 8中运行iOS应用程序时,如果使用了中文输出日志或者使用NSLog输出中文,则在控制台中会出现乱码。例如,下面的示例代码: let str = "Hello, 世界" print(str) NSLog(str) 输出结果在控制台中会呈现为以下效果: He…

    html 2023年5月31日
    00
  • C# 读写XML文件实例代码

    下面是关于 “C# 读写XML文件实例代码” 的完整攻略: 1. 简介 XML 是一种被广泛使用的数据交换格式,而 .NET Framework 提供了许多操作 XML 的类和方法。在 C# 中读写 XML 文件非常容易,只需要几行代码就可以完成任务。本文将介绍如何使用 C# 读写 XML 文件及示例代码。 2. 准备工作 在开始之前,需要确保您的开发环境中…

    html 2023年5月31日
    00
  • android实现在横竖屏切换时页面信息不被重置的示例分享

    这里就详细介绍一下实现“android实现在横竖屏切换时页面信息不被重置”的方法。 为什么需要实现页面信息不被重置? 在android应用中,屏幕横竖屏切换是非常常见的操作。当用户从竖屏切换到横屏或者从横屏切换到竖屏时,系统会销毁当前的Activity并重新创建一个新的Activity实例,这就会导致当前Activity中的所有信息都被重置,比如文本输入框中…

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