springboot对接mysql数据库全流程

560 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第17天,点击查看活动详情

前端目前已经做好了注册和登录的逻辑,需要对接后端接口。这个时候就需要用到我们的数据库了,然而我发现我之前没有用springboot操作过mysql数据库。这里记录下对接的全流程。

一、创建数据库

我这里已经创建好了。 匹配系统的数据库设计 - 掘金 (juejin.cn)

二、springboot对接全流程

第一步:导入依赖

在项目目录下的pom.xml导入依赖jdbcmysql。网络上有很多方法,我这里记录下我自己最好用的。

image.png

<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>

第二步:配置数据库信息

我这里是application.properties,配置结构如下。

image.png

spring.datasource.url=jdbc:mysql://你的数据库ip:3306/数据库名字
spring.datasource.username=你的用户名
spring.datasource.password=你的密码

第三步:创建UserEntity实体类,承接数据库user

image.png

public class UserEntity {
    private String email;
    private String username;
    private String password;
    private Date register_time;
    private boolean is_login;
    private int score;
}

第四步:Dao层创建UserDao接口和其实现类UserDaoImpl

  • UserDao接口
import com.example.api.Entity.UserEntity;

import java.util.List;

public interface UserDao {//注意jdbc连接不像springdata操作数据库需要继承JpaRepository


    public int add(UserEntity user);
    public int delete(String email);
    public int update(String email,UserEntity user);
    public UserEntity queryByEmail(String email);
    public List<UserEntity> queryAll();

}
  • UserDaoImpl实现方法
import com.example.api.Entity.UserEntity;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.stereotype.Repository;

import javax.annotation.Resource;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;

@Repository//Repository创建对象
public class UserDaoImpl implements UserDao {
    @Resource
    private JdbcTemplate jdbcTemplate;//创建jdbcTemplate对象操作数据库

    @Override
    public int add(UserEntity user) {
        String sql = "insert into user values(?,?,?)";
        //count:数据条数
        int count = jdbcTemplate.update(sql,user.getEmail(),user.getUsername(),user.getPassword());
        if(count>0) {
        System.out.println("添加成功"+"\t"+user);
        }else {
        System.out.println("添加失败"+"\t"+user);
        }
        return count;
    }

    @Override
    public List<UserEntity> queryAll() {
        String sql = "select * from user";
        RowMapper<UserEntity> rowMapper = new BeanPropertyRowMapper<UserEntity>(UserEntity.class);
        List<UserEntity> userlist = jdbcTemplate.query(sql, rowMapper);
        return userlist;
    }
 }

第五步:Service层创建UserService接口和其实现类UserServiceImpl

  • UserService接口
import com.example.api.Entity.UserEntity;
import java.util.List;
public interface UserService {
    public int add(UserEntity user);
    public int delete(String email);
    public int update(String email,UserEntity user);
    public UserEntity queryByEmail(String email);
    public List<UserEntity> queryAll();
}
  • UserServiceImpl实现方法
import com.example.api.Dao.UserDao;
import com.example.api.Entity.UserEntity;
import com.example.api.Service.UserService;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;
@Service
public class UserServiceImpl implements UserService {
    @Resource
    UserDao userDao;

    @Override
    public int add(UserEntity user) {
        return userDao.add(user);
    }

    @Override
    public List<UserEntity> queryAll() {
        return userDao.queryAll();//这里的getall使我们自己在dao层中写的方法,不像springdata那样使用的是框架的findAll方法。
    }
}

第六步:Controller层实现UserController方法

通过Controller进行访问。

import com.example.api.Entity.UserEntity;
import com.example.api.Service.UserService;

import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;

@RestController
public class UserController {
    @Resource
    private UserService userService;
    @CrossOrigin
    @GetMapping("/getuserlist")
    public List<UserEntity> getuserlist(){

        List<UserEntity> list = userService.queryAll();
        System.out.println(list);
        return list;//页面显示结果:[ { "age":12, "birthday":"2019-10-08 00:00:00", "userId":1, "username":"admin" } ]
    }
    @CrossOrigin
    @PostMapping("/adduser")
    public int adduser(@RequestParam("email") String email, @RequestParam("username") String username, @RequestParam("password") String password){
        UserEntity user =new UserEntity();
        user.setEmail(email);
        user.setUsername(username);
        user.setPassword(password);

        int count = userService.add(user);
        System.out.println("adduser"+"\t"+String.format("%s", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()))+"\t"+email+"\t"+password+"\t"+count);
        return count;//页面显示结果:[ { "age":12, "birthday":"2019-10-08 00:00:00", "userId":1, "username":"admin" } ]
    }

}

三、访问结果

getuserlist测试

image.png

adduser测试,出了点问题,不过问题不大。 image.png