SpringBoot+MyBatis后端框架详细教程

一:首先是创建一个SpringBoot项目

链接->如何创建一个SpringBoot项目?(详细的图文教程)

二:进行一个基本的HelloController运行

可在localhost访问,或者使用测试类验证SpringBoot的正确配置,链接->Spring Boot:基本应用和源码解析

三:联合MyBatis进行后端数据的获取

代码结构如下图所示:
SpringBoot+MyBatis后端框架详细教程_第1张图片

1、根据您所使用的数据库类型,在项目的构建文件(如 pom.xml 或 build.gradle)中添加相应的数据库驱动依赖。这样可以让应用程序能够与数据库进行交互。此处我使用的是 MySQL 数据库,可以添加以下 Maven 依赖,在pom.xml文件中:

		
        <dependency>
            <groupId>com.baomidougroupId>
            <artifactId>mybatis-plus-boot-starterartifactId>
            <version>3.4.2version>
        dependency>
        
        <dependency>
            <groupId>mysqlgroupId>
            <artifactId>mysql-connector-javaartifactId>
            <version>6.0.6version>
        dependency>
        
        <dependency>
            <groupId>com.alibabagroupId>
            <artifactId>druid-spring-boot-starterartifactId>
            <version>1.2.9version>
        dependency>

2、配置数据库连接信息:在应用程序的配置文件中,(如 application.yaml 、application.yml或 application.properties,这三种配置文件的语法和文件格式不同,但是作用是相同的,它们都用于配置 Spring Boot 应用程序的属性和行为。可以根据个人偏好或项目需求选择使用其中的一种。)配置数据库连接相关的属性,如数据库的 URL、用户名、密码等。我使用的是application.properties,配置文件如下:

# 端口号
server.port=8080
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/数据库名?serverTimezone=UTC
spring.datasource.username=用户名
spring.datasource.password=密码

3、数据库创建表信息如下图

SpringBoot+MyBatis后端框架详细教程_第2张图片
SpringBoot+MyBatis后端框架详细教程_第3张图片
4、创建实体类:在com.example.pojo下创建与数据库表对应的实体类,用于映射查询结果。此处注意java中的命名方式是驼峰命名对应数据库中字段名的下划线。User.class文件代码如下:

public class User {
    private Integer id;
    private String realName;
    private String userName;
    private String info;
    @Override
    public String toString(){
        return "User [id="+id+",real_name="+realName+",user_name="+userName+",info="+info+"]";
    }
}

5、注册 MyBatis 映射器和配置数据库连接:在 Spring Boot 的主配置类DemoApplication中进行配置,注册 MyBatis 映射器和配置数据库连接。使用 @MapperScan 注解指定 MyBatis 映射器接口所在的包,Spring Boot 会自动扫描并注册这些接口。DemoApplication.class 文件代码如下:

package com.example;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.properties.EnableConfigurationProperties;

@SpringBootApplication
@EnableConfigurationProperties
@MapperScan("com.example.dao")
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

}

6、创建 MyBatis 映射器和 SQL 语句:创建用于映射数据库表和 SQL 语句的 MyBatis 映射器接口MyBatis 映射器接口就是我们dao包下的mapper文件。UserMapper.class 文件代码如下:

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;

import java.util.List;

@Mapper
public interface UserMapper {
    @Select("SELECT * FROM users")
    List<User> getAllUsers();
}

7、创建写SQL语句的 XML 配置文件。在 Spring Boot 框架中,MyBatis 的 XML 配置文件通常位于 resources 目录下的 mapper 文件夹中。MyBatis XML 配置文件的路径可以根据个人喜好或项目需求进行配置。

默认情况下,Spring Boot 会将 resources 目录下的所有内容作为类路径的一部分。因此,可以将 MyBatis 的 XML 配置文件放置在 resources 目录下的任何位置,并且可以使用相对路径来引用这些文件。

src
└── main
    ├── java
    │   └── com
    │       └── example
    │           └── ...
    └── resources
        ├── application.properties
        ├── static
        └── mapper
            └── UserMapper.xml

userMapper.xml 代码如下:


DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.mapper.UserMapper">
    <select id="getAllUsers" resultType="com.example.pojo.User">
        SELECT * FROM user
    select>
mapper>

8、在 service 调用 dao 包里的 mapper 进行查询操作:在需要查询的类中注入 MyBatis 映射器接口,并使用其方法进行数据库查询。 UserService.class 文件代码如下:

import com.example.mapper.UserMapper;
import com.example.model.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class UserService {
    private final UserMapper userMapper;

    @Autowired
    public UserService(UserMapper userMapper) {
        this.userMapper = userMapper;
    }

    public List<User> getAllUsers() {
        return userMapper.getAllUsers();
    }
}

9、验证,有两种方法,一个是直接浏览器访问 http://localhost:8080/user/getAllUser 进行查询。还一个是使用测试类验证,测试类中加上对 UserController 的验证代码,DemoApplicationTest.class 文件代码整体如下所示:(仅运行 getAllUser 即可验证)。

package com.example;

import com.example.controller.HelloController;
import com.example.controller.UserController;
import com.example.pojo.Person;
import org.junit.jupiter.api.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

@RunWith(SpringRunner.class)
@SpringBootTest
class DemoApplicationTests {

    @Autowired
    private HelloController helloController;
    @Autowired
    private UserController userController;

    @Autowired
    private Person person;

    @Test
    void contextLoads() {
        String result = helloController.helloSpringBoot();
        System.out.println(result);
//        System.out.println(person);
    }

    @Test
    void showPersonInfo() {
        person.logPersonInfo();
    }

    @Test
    void getAllUser(){
        String res = userController.getAllUser();
        System.out.println(res);
    }
}

10、查询结果
SpringBoot+MyBatis后端框架详细教程_第4张图片SpringBoot+MyBatis后端框架详细教程_第5张图片
至此已经查询到数据库,可以操作了。以下再附加一个用来操作数据库的方法。

四、QueryWrapper 查询数据库

QueryWrapper 是 MyBatis-Plus 框架提供的一个查询条件构造器,用于构建复杂的查询条件。它可以帮助您构建灵活的查询语句,并支持动态拼接查询条件。

QueryWrapper 的主要作用包括:

  1. 简化查询条件的构建:通过使用 QueryWrapper,您可以使用链式调用的方式,按照需求构建各种查询条件,而无需手动编写复杂的 SQL
    语句。它提供了一系列方法,例如 eq、ne、like、in、between 等,用于构建等于、不等于、模糊匹配、范围查询等各种条件。
  2. 动态条件拼接:QueryWrapper 支持根据条件的存在与否动态拼接查询条件。您可以使用
    ifPresent、ifNotPresent、isNull、isNotNull
    等方法,根据条件的满足情况动态添加查询条件,从而实现更灵活的查询。
  3. 排序和分页支持:QueryWrapper 提供了排序和分页的支持。您可以使用 orderBy 方法指定排序字段和排序方式,使用 last
    方法添加自定义 SQL 片段,使用 page 方法指定分页查询的页码和每页记录数。
  4. 支持 Lambda 表达式:QueryWrapper 还支持使用 Lambda 表达式来构建查询条件。通过使用 Lambda
    表达式,可以更加简洁和类型安全地构建查询条件,减少编写字符串形式的字段名和条件的错误。

使用 QueryWrapper 的示例代码如下所示:

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("age", 25) // 等于条件
    .like("name", "John") // 模糊匹配条件
    .in("status", Arrays.asList("ACTIVE", "INACTIVE")) // IN 条件
    .between("salary", 5000, 10000) // 范围查询条件
    .orderByAsc("create_time") // 升序排序
    .last("LIMIT 10"); // 追加自定义 SQL

List<User> userList = userMapper.selectList(queryWrapper);

在上述示例中,首先创建了一个 QueryWrapper 对象,并通过链式调用的方式构建了一些查询条件。最后,将 QueryWrapper 对象传递给 selectList 方法来执行查询操作,返回符合条件的 User 对象列表。通过使用 QueryWrapper,您可以更加灵活和方便地构建复杂的查询条件,减少手写 SQL 的工作量,并提高代码的可读性和可维护性。

下面用刚刚的user查询,写一个简单的例子。仅需两步:

  1. 将 UserService.class 中的 getAllUser 方法改为:
    public List<User> getAllUsers() {
        QueryWrapper<User> wrapper = new QueryWrapper<>();
//        wrapper.eq("real_name","孟子义");
        List<User> users = userMapper.selectList(wrapper);
        return users;
    }
  1. 该方法不需要使用 userMapper.xml 文件手写 sql 语句,但是需要 UserMapper.class 接口继承了
    BaseMapper,其中 User 是您的实体类,表示操作的数据对象。
public interface UserMapper extends BaseMapper<User> {
  // 可以自定义一些其他的方法
}

你可能感兴趣的:(java开发,spring,boot,mybatis,后端,java)