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日

相关推荐

  • Java自学之异常的捕获与处理

    在程序开发中,程序的编译与运行是两个不同的阶段,编译主要针对的是语法检测,而在程序运行时却有可能出现各种各样的错误导致程序中断执行,那么这些错误在Java中统一称为异常。 异常处理…

    2020年12月11日
    1.3K
  • Java自学之继承

    在面向对象的设计过程中,类是基本的逻辑单位。但是对于这些基本的逻辑单位需要考虑到重用的设计问题,所以在面向对象的设计里提供有继承,并利用这一特点实现类的可重用性定义。 类继承定义 …

    2020年12月3日
    1.3K
  • Java自学之I/O编程

    I/O(Input/Output,输入/输出)可以实现数据的读取与写入操作,Java针对I/O操作的实现提供了java.io工具包,此包的核心组成由File类、InputStrea…

    2020年12月21日
    1.2K
  • MyBatis之MyBatis-Generator标签配置及意义

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

    2019年12月27日
    1.8K
  • Java自学之抽象类与接口

    面向对象程序设计中,类继承的主要作用的扩充已有类的功能。子类可以根据自己的需要选择是否要覆写父类中的方法,所以一个设计完善的父类是无法对子类做出任何强制性的覆写约定。为了解决这样的…

    2020年12月7日
    1.2K
  • JavaWeb入门案例之用户注册

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

    2021年1月13日
    1.6K
  • spring4.x学习之创建工程

    断断续续学习Java有两三个月了,目前还是处于入门阶段。关于java及spring那些的设计理念方面的理论知识,不花费大量精力及时间是看不懂的(至少对于我这么一个前端转后端的初学者…

    2019年3月19日
    1.8K
  • Java自学之类结构扩展

    面向对象中的核心组成是类与接口,在项目中会利用【包】进行一组相关类的管理,这样适合于程序代码的部分更新,也更加符合面向对象封装性的概念,同时合理地使用封装也可以方便地实现实例化对象…

    2020年12月10日
    1.3K
  • JAVA基础知识整理

    终于下定决心2020年转JAVA开发,自学之路坎坷曲折。俗话说的话,好记性不如烂笔头。如果有小伙伴们也像我一样在JAVA自学之路上徘徊,那就关注一下我的博客网站。我会不定期更新一下…

    2020年1月11日
    1.7K
  • STS插件mybatis-generator安装及使用

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

    2019年12月27日
    2.2K