likes
comments
collection
share

前端开发学习Spring Boot,配置数据库以及使用数据库

作者站长头像
站长
· 阅读数 34

继续学习Spring Boot,学习数据库配置相关知识。前两篇

项目文件结构

再回顾一次项目文件结构

前端开发学习Spring Boot,配置数据库以及使用数据库

说下我的理解:

Spring Boot项目源码在src下面,pom.xml是依赖配置文件,application.properties是项目配置文件,该配置文件还可以写多个,每个环境写一个,以适应不同环境的接口地址需要。比如在src/main/resources目录下创建两个配置文件,分别命名为application-dev.propertiesapplication-prod.properties。这两个文件分别对应开发环境和生产环境的配置。

另外,application.properties可以配置服务器端口号,配置项目全局变量,其实这里也可以配置数据库相关参数。

Spring Boot的启动类或入口文件是StartApplication

对比一下vue项目文件结构

前端开发学习Spring Boot,配置数据库以及使用数据库

vue的项目的源码也在src文件夹下,main.js是入口文件,package.json是依赖配置文件,然后.env.test,.env.prod和.env.develop是环境配置文件,也可以在其中配置全局变量。

数据库配置

上面说了,在Spring Boot中使用数据库需要在application.properties文件中配置你的数据库信息,比如我的

spring.datasource.url=jdbc:mysql://localhost:3306/codejoy?useSSL=false&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

上面很简单,我用的是本地的Mysql数据库,首先是连接地址,连接地址的3306后面的codejoy,就是要用的数据库名称,剩下的是账号和密码。

至于最后一行配置表示在Spring框架中,设置数据源使用的数据库驱动为MySQL的JDBC驱动。

之后还需要下载需要的数据库配置依赖,在pom.xml中加入

<dependency>
   <groupId>org.mybatis.spring.boot</groupId>
   <artifactId>mybatis-spring-boot-starter</artifactId>
   <version>2.2.0</version>
</dependency>
<dependency>
   <groupId>mysql</groupId>
   <artifactId>mysql-connector-java</artifactId>
   <version>5.1.38</version>
</dependency>

解释一下,这2个依赖分别是MyBatis的Spring Boot启动器和MySQL的JDBC驱动

  1. mybatis-spring-boot-starter:这是MyBatis的Spring Boot启动器,它包含了MyBatis和Spring Boot集成所需的所有依赖。使用这个启动器,可以非常方便地在Spring Boot项目中使用MyBatis。

  2. mysql-connector-java:这是MySQL的JDBC驱动,它让Java程序可以通过JDBC接口与MySQL数据库进行通信。如果项目需要连接MySQL数据库,需要这个依赖。

使用数据库

说实话,在Spring Boot中使用数据库一点不性感,和在nodejs中相比,需要写的东西比较多。

首先,我单独创建了一个包dba,在其下写数据库相关的代码。

创建包后,首先创建一个实体类

package helloWorld.start.dba;

import lombok.Data;

@Data
public class User {
    private Long id;
    private String username;
    private String roles;
}

这个时候lombok.Data就发挥作用,就是避免写重复的getter和setter函数。这个实体类就有点讲究了,写的这个类名User是和数据库对应的表名对应的,写的是User表,查的就是这个表。

其次,创建Mapper,在Spring Boot和MyBatis中,Mapper通常指的是一个接口,这个接口定义了一些方法,这些方法对应了SQL查询。MyBatis会为这个接口生成一个实现类,这个实现类中的方法会执行实际的SQL查询。

我创建的Mapper

package helloWorld.start.dba.mapper;

import helloWorld.start.dba.User;
import org.apache.ibatis.annotations.*;

import java.util.List;

@Mapper
public interface UserMapper {

    @Select("SELECT * FROM user WHERE id = #{id}")
    User findById(@Param("id") Long id);

    @Insert("INSERT INTO user(name, age) VALUES(#{name}, #{age})")
    int insert(User user);

    @Update("UPDATE user SET name=#{name}, age=#{age} WHERE id=#{id}")
    int update(User user);

    @Delete("DELETE FROM user WHERE id=#{id}")
    int deleteById(@Param("id") Long id);

    @Select("SELECT * FROM user")
    List<User> findAll();
}

接着创建Service,Service是真正给查询用的,是给接口用的,接口直接用Service。在Spring框架中,Service通常指的是业务逻辑层的组件。这一层主要负责处理业务逻辑,包括数据的处理、计算等。 Service通常会使用到Repository或Mapper来进行数据的读写操作。在Service中,可以编写业务逻辑,比如数据的校验、计算等,并调用Repository或Mapper的方法来进行数据的读写。

package helloWorld.start.dba.service;

import helloWorld.start.dba.User;
import helloWorld.start.dba.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class UserService {

    @Autowired
    private UserMapper userMapper;

    public User findById(Long id) {
        return userMapper.findById(id);
    }

    public int insert(User user) {
        return userMapper.insert(user);
    }

    public int update(User user) {
        return userMapper.update(user);
    }

    public int deleteById(Long id) {
        return userMapper.deleteById(id);
    }

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

最后在接口中使用就可以了

package helloWorld.start;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;


import helloWorld.start.dba.User;
import helloWorld.start.dba.service.UserService;

@RestController
public class HelloWorldController {

    // 相当于注入对象,可以直接使用对象的方法,相当于new
    @Autowired
    private UserService userService;

    @RequestMapping("/helloWorld")
    public Object helloWorld(Integer id){
        User User = userService.findById((long)id);
        return Result.success(User);
    }
}

其中的Result是一个结果类

package helloWorld.start;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Result {

    private int code;
    private String message;
    private Object data;

    public static Result success(Object data) {
        return new Result(200, "操作成功", data);
    }

    public static Result error(String message) {
        return new Result(500, message, null);
    }
}

在浏览器地址栏访问测试一下

前端开发学习Spring Boot,配置数据库以及使用数据库

大功告成!项目文件结构如下

前端开发学习Spring Boot,配置数据库以及使用数据库

转载自:https://juejin.cn/post/7371986999164600330
评论
请登录