Spring boot 后台

github 地址 SpringBoot-book-vue-demo

使用tk.mytabis 简化mybatis 开发

使用 durid 连接池 连接Mysql

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.5.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.lick</groupId>
<artifactId>vue_demo</artifactId>
<version>1.0.0-SNAPSHOT</version>
<name>vue_demo</name>
<description>Demo project for Spring Boot</description> <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<mysql.version>8.0.15</mysql.version> </properties> <dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<!-- Druid 数据库连接 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.10</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
<version>2.0.2</version>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.5</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies> <build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.5</version>
<configuration>
<configurationFile>${basedir}/src/main/resources/generator/generatorConfig.xml</configurationFile>
<overwrite>true</overwrite>
<verbose>true</verbose>
</configuration>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper</artifactId>
<version>3.4.4</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
</project>

实体类 TbUser.java

package com.lick.vue_demo.domain;

import javax.persistence.*;
import javax.validation.constraints.NotNull; @Table(name = "tb_user")
public class TbUser {
/**
* 用户ID
*/
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id; /**
* 登录名
*/
@NotNull(message = "用户名不能为空")
private String username; /**
* 登录密码
*/
@NotNull(message = "密码不能为空")
private String password; /**
* 手机号
*/
private String phone; /**
* 获取用户ID
*
* @return id - 用户ID
*/
public Integer getId() {
return id;
} /**
* 设置用户ID
*
* @param id 用户ID
*/
public void setId(Integer id) {
this.id = id;
} /**
* 获取登录名
*
* @return username - 登录名
*/
public String getUsername() {
return username;
} /**
* 设置登录名
*
* @param username 登录名
*/
public void setUsername(String username) {
this.username = username;
} /**
* 获取登录密码
*
* @return password - 登录密码
*/
public String getPassword() {
return password;
} /**
* 设置登录密码
*
* @param password 登录密码
*/
public void setPassword(String password) {
this.password = password;
} /**
* 获取手机号
*
* @return phone - 手机号
*/
public String getPhone() {
return phone;
} /**
* 设置手机号
*
* @param phone 手机号
*/
public void setPhone(String phone) {
this.phone = phone;
}
}

登录控制层 LoginController.java

package com.lick.vue_demo.controller;

import com.lick.vue_demo.domain.TbUser;
import com.lick.vue_demo.mapper.TbUserMapper;
import com.lick.vue_demo.result.AjaxResult;
import com.lick.vue_demo.result.ResultFactory;
import com.lick.vue_demo.utils.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.*;
import tk.mybatis.mapper.entity.Example; import javax.validation.Valid; @RestController
@CrossOrigin
public class LoginController {
@Autowired
private TbUserMapper tbUserMapper; @RequestMapping(value = "/api/login", method = RequestMethod.POST, produces = "application/json; charset=UTF-8")
public AjaxResult login(@Valid @RequestBody TbUser tbUser, BindingResult bindingResult) {
if (bindingResult.hasErrors()) {
String message = String.format("登陆失败,详细信息[%s]。", bindingResult.getFieldError().getDefaultMessage());
return ResultFactory.buildFailResult(message);
}
Example example = new Example(TbUser.class);
example.createCriteria().andEqualTo("username",tbUser.getUsername());
TbUser tbUser1 = tbUserMapper.selectOneByExample(example);
if(StringUtils.isNotNull(tbUser1)) {
if ( !tbUser.getPassword().equals(tbUser1.getPassword())) {
String message = String.format("登陆失败,详细信息[密码不正确]。");
return ResultFactory.buildFailResult(message);
}else {
return ResultFactory.buildSuccessResult(tbUser1);
}
}else {
String message = String.format("登陆失败,详细信息[用户名不正确]。");
return ResultFactory.buildFailResult(message);
} }
}

返回值实体类 Result.java

package com.lick.vue_demo.result;

/**
* 通用返回值实例
*/
public class AjaxResult {
/**
* 响应状态码
*/
private int code;
/**
* 响应状态消息
*/
private String msg;
/**
* 响应结果对象
*/
private Object object; public int getCode() {
return code;
} public void setCode(int code) {
this.code = code;
} public String getMsg() {
return msg;
} public void setMsg(String msg) {
this.msg = msg;
} public Object getObject() {
return object;
} public void setObject(Object object) {
this.object = object;
} AjaxResult (int code,String msg,Object data) {
this.code = code;
this.msg = msg;
this.object = data;
}
}

代码编号 ResultCode.java

package com.lick.vue_demo.result;

public enum ResultCode {
/**
* 成功
*/
SUCCESS(200),
/**
* 失败
*/
FAIL(400), /**
* 未认证(签名错误)
*/
UNAUTHORIZED(401), /**
* 接口不存在
*/
NOT_FOUND(404), /**
* 服务器内部错误
*/
INTERNAL_SERVER_ERROR(500); public int code; ResultCode(int code) {
this.code = code;
} }

响应结果生产工厂 ResultFactory.java

package com.lick.vue_demo.result;

/**
* @description 响应结果生成工厂类
*/
public class ResultFactory {
public static AjaxResult buildSuccessResult(Object data) {
return buildResult(ResultCode.SUCCESS, "成功", data);
} public static AjaxResult buildFailResult(String message) {
return buildResult(ResultCode.FAIL, message, null);
} public static AjaxResult buildResult(ResultCode resultCode, String message, Object data) {
return buildResult(resultCode.code, message, data);
} public static AjaxResult buildResult(int resultCode, String message, Object data) {
return new AjaxResult(resultCode, message, data);
}
}

spring boot + vue 前后分离实现登录功能(三)的更多相关文章

  1. spring boot + vue 前后分离实现登录功能(二)

    安装 axios 进行路由转发 npm install axios --save-dev 或者 cnpm install axios --save-dev 修改 Main.js 新增 var axio ...

  2. spring boot + vue 前后分离实现登录功能(一)

    使用webpack 打包初始化项目 vue init webpack book-vue 进入工程目录 cd hello-vue 安装 vue-router npm install vue-router ...

  3. Spring Boot +Vue 项目实战笔记(三):数据库的引入

    这一篇的主要内容是引入数据库并实现通过数据库验证用户名与密码. 一.引入数据库 之前说过数据库的采用是 MySQL,算是比较主流的选择,从性能和体量等方面都比较优秀,当然也有一些弊端,但数据库不是我们 ...

  4. 喜大普奔,两个开源的 Spring Boot + Vue 前后端分离项目可以在线体验了

    折腾了一周的域名备案昨天终于搞定了. 松哥第一时间想到赶紧把微人事和 V 部落部署上去,我知道很多小伙伴已经等不及了. 1. 也曾经上过线 其实这两个项目当时刚做好的时候,我就把它们部署到服务器上了, ...

  5. 两个开源的 Spring Boot + Vue 前后端分离项目

    折腾了一周的域名备案昨天终于搞定了. 松哥第一时间想到赶紧把微人事和 V 部落部署上去,我知道很多小伙伴已经等不及了. 1. 也曾经上过线 其实这两个项目当时刚做好的时候,我就把它们部署到服务器上了, ...

  6. 一个实际的案例介绍Spring Boot + Vue 前后端分离

    介绍 最近在工作中做个新项目,后端选用Spring Boot,前端选用Vue技术.众所周知现在开发都是前后端分离,本文就将介绍一种前后端分离方式. 常规的开发方式 采用Spring Boot 开发项目 ...

  7. 前后端分离,我怎么就选择了 Spring Boot + Vue 技术栈?

    前两天又有小伙伴私信松哥,问题还是职业规划,Java 技术栈路线这种,实际上对于这一类问题我经常不太敢回答,每个人的情况都不太一样,而小伙伴也很少详细介绍自己的情况,大都是一两句话就把问题抛出来了,啥 ...

  8. spring boot+vue实现H5聊天室客服功能

    spring boot+vue实现H5聊天室客服功能 h5效果图 vue效果图 功能实现 spring boot + webSocket 实现 官方地址 https://docs.spring.io/ ...

  9. Spring Boot + Vue 跨域请求问题

    使用Spring Boot + Vue 做前后端分离项目搭建,实现登录时,出现跨域请求 Access to XMLHttpRequest at 'http://localhost/open/login ...

随机推荐

  1. Mariadb 介绍 1 (安装)

    引言: mariadb是是由开源社区维护,在这我会从安装到实战都会介绍到.后期所有用到mysql数据库的项目我会全用mariaDB来替换,实际使用中的区别我会标出,请大家注意 MariaDB: Mar ...

  2. python Linux 环境 (版本隔离工具)

    python Linux 环境 (版本隔离工具) 首先新建用户,养成良好习惯useradd python 1.安装pyenv GitHub官网:https://github.com/pyenv/pye ...

  3. VMware安装ubantu

    下载ubantu镜像文件: http://mirror.pnl.gov/releases/xenial/ http://mirrors.melbourne.co.uk/ubuntu-releases/ ...

  4. CentOS7安装Redis单实例

    由于环境差异,安装过程可能遇到各种各样的问题,不要慌,根据错误提示解决即可. 1.下载redis下载地址在:redis.io比如把Redis安装到/usr/local/soft/ cd /usr/lo ...

  5. Java内存模型中volatile关键字的作用

    volatile作用总结: 1. 强制线程从公共内存中取得变量的值,而不是从线程的私有的本地内存中,volatile修饰的变量不具有原子性(修改一个变量的值不能同步). 2. 保证volatile修饰 ...

  6. 微信小程序~App.js中获取用户信息

    (1)代码:主要介绍下获取用户信息部分 onLaunch: function () { // 展示本地存储能力 var logs = wx.getStorageSync('logs') || [] l ...

  7. 《The One!团队》:BETA Scrum metting1

    项目 内容 作业所属课程 所属课程 作业要求 作业要求 团队名称 < The One !> 作业学习目标 (1)掌握软件黑盒测试技术:(2)学会编制软件项目总结PPT.项目验收报告:(3) ...

  8. vbs读取TXT每一行并赋值到变量a

    vbs代码: Dim fso,f,a Set fso = CreateObject("Scripting.FileSystemObject") Set f=fso.OpenText ...

  9. 行为型模式(八) 职责链模式(Chain of Responsibility)

    一.动机(Motivate) 在软件构建过程中,一个请求可能被多个对象处理,但是每个请求在运行时只能有一个接受者,如果显示指定,将必不可少地带来请求发送者与接受者的紧耦合.如何使请求的发送者不需要指定 ...

  10. python关于字典嵌套字典,列表嵌套字典根据值进行排序

    python 对于字典嵌套字典, 列表嵌套字典排序 例:列表嵌套自字典:d = [{"name": '张三', 's': 68}, {'name': '李四', 's': 97}] ...