spring boot练习篇之用户登录系统【接入数据库】

抛弃JSP,只做纯粹的前后端分离项目。

写在前面

学习基础知识是枯燥无味的,之所以会这样,多数是因为心不静,对于如何运用它,感到茫然。所以建议大家在学习Java基础知识的时候,一定要自己写实例,这样才能理解透彻,才能知道在以后的项目中如何运用所学到的知识。

正文

接上一篇《spring boot练习篇之用户登录系统【接口篇】》,此次将要接入本地MySQL数据库。至于本地如何安装MySQL数据库,小编会单独更新一篇文章讲解。

此项目使用的Spring + MyBatis。在开始写代码前,需要将项目所需的依赖包引进来。

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

接下来配好数据库连接。在application.properties文件中配置。

#数据库连接
spring.datasource.url=jdbc:mysql://localhost:3306/rpm_sql?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC 
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

首先在MySQL数据库中新建一个项目数据库【rpm_sql】,并新建一张用户表【table_users】。

use rpm_sql
create table table_users
(
    userId   int auto_increment
        primary key,
    name     varchar(255) null,
    password varchar(255) null
);

在项目中新建一个entity包,并在该包下新建一个UserEntity类。

package com.example.rpm.entity;

import lombok.Data;

@Data
public class UserEntity {
  private int userId;
  private String name;
  private String password;
}

在项目中新建一个Mapper包,并在该包下新建一个UserMapper类。

package com.example.rpm.mapper;

import com.example.rpm.entity.UserEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

@Mapper
public interface UserMapper {
  @Select("SELECT * FROM table_users WHERE name = #{name}")
  UserEntity queryByName(@Param("name") String name);
}

知识点

@Mapper 是 Mybatis 的注解,和 Spring 没有关系;添加了@Mapper注解之后这个接口在编译时会生成相应的实现类;

接下来就是要将上一篇文章的项目工程完善一下。

修改业务逻辑层service的实现类UserServiceImpl。

package com.example.rpm.service;
import com.example.rpm.entity.UserEntity;
import com.example.rpm.mapper.UserMapper;
import com.example.rpm.result.ExceptionMsg;
import com.example.rpm.result.Response;
import com.example.rpm.result.ResponseData;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class UserServiceImpl implements UserService{

  private UserMapper userMapper;

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

  @Override
  public Response login(String name,String password) {

    UserEntity userEntity = userMapper.queryByName(name);
    if(userEntity == null) {
      return new ResponseData(ExceptionMsg.FAILED);
    }
    String userDaoPassword = userEntity.getPassword();
    if (password.equals(userDaoPassword)) {
      return new ResponseData(ExceptionMsg.SUCCESS, userEntity);
    }
    return new ResponseData(ExceptionMsg.FAILED);
  }
}

到此,项目已经成功接入数据库。

总结

在纯粹的前后端分离项目中,后端服务只负责提供相应的接口。页面跳转、数据展示效果以及部分逻辑都会交给前端来完成。

在使用spring的后端服务中,数据流程大致是controller负责接收用户输入的参数【即浏览器调用接口的入参】,在controller中引入service层,调用service层的方法,数据就进入service层,在service层进行业务逻辑处理【即数据的增、删、改、查】。在进行业务逻辑处理时,是以数据库的数据为凭证的,而在使用MyBatis的项目中,执行相应的SQL语句是在Mapper层,所以要在service层中引入Mapper层中的方法,这样就可以操作数据库了。而实体层【entity】以及封装的response类只是数据的载体,哪里需要,直接在那里引入使用即可。

 

原创文章,作者:ZERO,如若转载,请注明出处:https://www.edu24.cn/course/java/spring-boot-login-mysql.html

(1)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
ZEROZERO
上一篇 2021年5月25日
下一篇 2022年3月31日

相关推荐

  • Spring Tools学习之JAVA开发环境搭建【windows 10】

    一直以来都想学习JAVA,但是苦于找不到门路,网上学习资料要不看不懂,要不需要金钱。 终于,迫于生活与年龄的压力,下定决心,学习JAVA。 写下此文档,记录一下自己学习JAVA之路…

    2018年12月6日
    3.0K
  • Spring Boot的常用注解

    未来的框架趋势是“约定大于配置”,代码的封装会更加严密。开发人员会将更多的精力放在代码的整体优化和业务逻辑上,所以注解式编程会被更加广泛地使用。那么什么是注解?Spring Boo…

    2024年8月29日
    485
  • 如何使用IDEA2020.2新建servlet工程

    最近自学java时,发现IDEA更新到2020.2版本时,在新建工程时,有了明显的改动。由于小编刚学到servlet,IDEA这一突然间的改动,导致小编不会新建servlet工程了…

    2020年8月17日
    6.0K
  • MyBatis之MyBatis-Generator标签配置及意义

    DTD 标签 <generatorConfiguration/>: 根标签,所有的配置都必须在该标签内配置;没有属性 <properties/>: 主要引用外部的pro…

    2019年12月27日
    1.9K
  • Java自学之类与对象

    定义 类是由成员属性和方法组成。成员属性主要定义类的一个具体信息,实际上一个成员属性就是一个变量,而方法是一些操作的行为。类的定义基础语法如下。 一个类定义完成后并不能够被直接使用…

    2020年11月25日
    1.4K
  • servlet学习之获取表单数据(IDEA2020.2篇)

    首先,创建一个servlet工程。 如果你不会用IDEA2020.2创建servlet工程,请打开下面链接浏览网站博文。 https://www.edu24.cn/course/j…

    2020年9月8日
    1.5K
  • Java自学之多线程编程

    多线程编程是Java语言最为重要的特性之一。利用多线程技术可以提升单位时间内的程序处理性能,也是现代程序开发中高并发的主要设计模式。 进程与线程 进程是一个应用程序。线程是一个进程…

    2020年12月16日
    1.6K
  • STS插件mybatis-generator安装及使用

    断断续续学习Java也有好长时间了,没有师傅带,没有项目练手,学习超级慢,也很烦。视频、书籍翻看了一大推,还是没有目标。 相信滴水成海,外加条条大路通罗马,只要坚持,自己终能达成目…

    2019年12月27日
    2.4K
  • JavaWeb入门案例之用户注册

    前言 之前把Java的基础知识系统的过了一遍,目前总算可以看懂Java代码了,接下来就是要学习Java开发框架(主要是springMVC)。 下面用一个用户注册的小案例,来总结一下…

    2021年1月13日
    1.7K
  • Java自学之数组

    在Java中数组是一组相关变量的集合,属于引用数据类型。 定义 数组引用传递分析 数组属于引用数据类型,在数组使用时需要通过关键字new开辟堆内存空间,一块堆内存空间也可以同时被多…

    2020年11月26日
    1.4K