一、引言

作者将代码上传到了Gitee,小伙伴可以直接Clone项目到本地

项目地址:https://gitee.com/cai-zijing/SpringBoot_MybatisPlus_Login_Demo.git

再告诉大家一个非常好用的插件Gitee,主要功能为在IDEAL中与远程仓库进行可视化交互

输入项目地址一步解决项目克隆

二、项目结构

三、代码

3.1 pom.xml依赖

注意MybatisPlus虽然是Mybatis的扩展,但是在xml依赖中不可加Mybatis

<?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 https://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.7.4</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.bcn</groupId><artifactId>Login_MybatisPlus_Demo</artifactId><version>0.0.1-SNAPSHOT</version><name>Login_MybatisPlus_Demo</name><description>Login_MybatisPlus_Demo</description><properties><java.version>17</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><optional>true</optional></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.2</version></dependency><!--mp代码生成器--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-generator</artifactId><version>3.5.3</version></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><excludes><exclude><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></exclude></excludes></configuration></plugin></plugins></build></project>

3.2 applicaiton.yml配置文件

因人喜好是否将application.propertie重命名为application.yml

server:port: 9091spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverusername: rootpassword: 123456url: jdbc:mysql://localhost:3306/login?serverTimezone=UTCservlet:multipart:max-request-size: 100MBmax-file-size: 50MB# Show sql
logging:level:com:example:mapper: debug

3.3 User实体类

@Data各个属性getter、setter等方法

@AllArgsConstructor有参构造函数

@NoArgsConstructor无参构造函数

package com.bcn.login_mybatisplus_demo.pojo;import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;/*** @author 大白菜* @date Created in 2022/9/27 9:29*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {@TableId(type = IdType.AUTO)public Integer uid;public String uname;public String uaccount;private String upassword;public User(String uname, String uaccount, String upassword) {this.uname = uname;this.uaccount = uaccount;this.upassword = upassword;}}

3.4 UserMapper接口层

注意MybatisPlus中Mapper是需要继承BaseMapper的,BaseMapper提供了常见的CRUD方法,这就是与Mybatis最大的不同

@mapper MybatisPlus数据访问层标志

@Repository SpringBoot数据访问层标志

package com.bcn.login_mybatisplus_demo.mapper;import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.bcn.login_mybatisplus_demo.pojo.User;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;/*** @author 大白菜* @date Created in 2022/9/27 9:30*/@Repository
@Mapper
public interface UserMapper extends BaseMapper<User> {User searchByUaccount(String uact);
}

3.5 UserService业务接口层

当业务需求较为简单时,该层可舍弃,只用ServiceImpl即可

package com.bcn.login_mybatisplus_demo.service;import com.bcn.login_mybatisplus_demo.pojo.User;/*** @author 大白菜* @date Created in 2022/9/27 9:31*/
public interface UserService {public String loginService(String uact, String upwd);public String registerService(User user);
}

3.6 UserServiceImpl业务层

@Service 业务层标志

userMapper.insert(T)方法是BaseMappaer中的方法,我们不需要在xml中写sql即可使用,这些CRUD方法提高了一定的开发效率

package com.bcn.login_mybatisplus_demo.service.ServiceImpl;import com.bcn.login_mybatisplus_demo.mapper.UserMapper;
import com.bcn.login_mybatisplus_demo.pojo.User;
import com.bcn.login_mybatisplus_demo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;/*** @author 大白菜* @date Created in 2022/9/27 9:31*/
@Service
public class UserServiceImpl implements UserService {@AutowiredUserMapper userMapper;@Overridepublic String loginService(String uact, String upwd) {User user = userMapper.searchByUaccount(uact);if (user != null) {if (upwd.equals(user.getUpassword())) {return "SUCCESS";} else {return "密码错误";}}return "此用户不存在";}@Overridepublic String registerService(User user) {User userE = userMapper.searchByUaccount(user.getUaccount());if (userE == null) {if ("".equals(user.getUpassword())) {return "请输入密码";} else if ("".equals(user.getUname())) {return "请输入用户昵称";} else {userMapper.insert(user);return "SUCCESS";}}return "用户已存在";}}

3.7 UserController控制层

@SuppressWarnings({"all"}) 控制台输出过滤掉警告信息

@RestController控制层标志,等价于@Controller+@ResponseBody

@RequestMapping() 对外接口地址

package com.bcn.login_mybatisplus_demo.controller;import com.bcn.login_mybatisplus_demo.pojo.User;
import com.bcn.login_mybatisplus_demo.service.ServiceImpl.UserServiceImpl;
import com.bcn.login_mybatisplus_demo.util.Result;
import com.bcn.login_mybatisplus_demo.util.ResultUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;/*** @author 大白菜* @date Created in 2022/9/27 9:31*/
@SuppressWarnings({"all"})
@RestController
@RequestMapping("/user")
public class UserController {@AutowiredUserServiceImpl userServiceImpl;@RequestMapping("/login")public Result login(@RequestParam String uact, @RequestParam String upwd) {String msg = userServiceImpl.loginService(uact, upwd);if (("SUCCESS").equals(msg)) {return ResultUtil.success("登录成功");} else {return ResultUtil.error(msg);}}@RequestMapping("/register")public Result login(@RequestBody User user) {String msg = userServiceImpl.registerService(user);if (("SUCCESS").equals(msg)) {return ResultUtil.success("注册成功");} else {return ResultUtil.error(msg);}}}

3.8 Result、ResultCode、ResultUtil 返回结果工具类

在正式开发中,我们返回给前端除了Body之外,还需要状态码与状态信息,这就需要使用到Result工具类,其返回效果如下

Result类

package com.bcn.login_mybatisplus_demo.util;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;/*** @author 大白菜* @date Created in 2022/9/27 9:34*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Result<T> {private Integer code;private String msg;private T data;
}

ResultCode类

package com.bcn.login_mybatisplus_demo.util;/*** @author 大白菜* @date Created in 2022/9/27 9:35*/
public enum ResultCode {// 自定义枚举内容SUCCESS(200, "Success"),ERROR(-100, "Error");private Integer code;private String msg;ResultCode(Integer code, String msg) {this.code = code;this.msg = msg;}public Integer getCode() {return code;}public String getMsg() {return msg;}
}

ResultUtil类

package com.bcn.login_mybatisplus_demo.util;/*** @author 大白菜* @date Created in 2022/9/27 9:34*/
public class ResultUtil {/*** 成功且带数据**/public static Result success(Object object) {Result result = new Result();result.setCode(ResultCode.SUCCESS.getCode());result.setMsg(ResultCode.SUCCESS.getMsg());result.setData(object);return result;}/*** 成功但不带数据**/public static Result success() {return success(null);}/*** 失败**/public static Result error(Object object) {Result result = new Result();result.setCode(ResultCode.ERROR.getCode());result.setMsg(ResultCode.ERROR.getMsg());result.setData(object);return result;}
}

3.9 Mapper.xml映射文件

使用Mybatis需要在resource下创建mapper文件夹,里面存放各类xml映射文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.bcn.login_mybatisplus_demo.mapper.UserMapper"><select id="searchByUaccount" resultType="com.bcn.login_mybatisplus_demo.pojo.User">select *from userwhere uaccount = #{uaccount}</select>
</mapper>

3.10 login.sql数据库文件

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user`  (`uid` int(11) NOT NULL AUTO_INCREMENT,`uname` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`uaccount` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`upassword` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,PRIMARY KEY (`uid`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 8 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES (1, '皮卡丘', '123456', '123456');
INSERT INTO `user` VALUES (4, '杰尼龟', '1234567', '123456');
INSERT INTO `user` VALUES (7, '妙蛙种子', '12345678', '123456');SET FOREIGN_KEY_CHECKS = 1;

【BackEnd】SpringBoot整合MybatisPlus实现登录注册功能(适合初学者)相关推荐

  1. SpringBoot整合Shiro搭建登录注册认证授权权限项目模板

    主要内容: 1 SpringBoot整合Shiro安全框架; 2 Shiro主要学习内容总结;(执行流程.主要对象接口.注意事项等) 3 Redis实现对权限信息缓存; ! 温馨提示: 想要快速搭Sh ...

  2. SpringBoot+Vue实现邮箱登录注册功能

    点击链接查看项目 SpringBoot邮件发送 邮件发送是一个非常常见的功能,注册时的身份认证.重要通知发送等都会用到邮件发送.Sun公司提供了JavaMail用来实现邮件发送,但是配置烦琐,Spri ...

  3. springboot 整合 MongoDB 实现登录注册,html 页面获取后台参数的方法

    springboot简介: Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不 ...

  4. SpringBoot整合Mybatis-Plus,代码生成器Generator以及Swagger(附源码、图文学习、Postman、ApiPost第三方工具的使用)

    目录 一.SpringBoot整合Mybatis-plus 1.引入依赖 2.创建数据库 3.整合代码生成器Generator 二.什么是Swagger2,有什么作用? 三.SpringBoot整合S ...

  5. SpringBoot整合Shiro实现登录认证和授权CHCache

    文章目录 一. springboot实现普通登录 1 添加依赖 2 编写配置文件 3 新建实体类和mapper 4 编写业务层代码 5 编写控制器 6 编写启动类 7 编写登录页面和主页面 二. sp ...

  6. 实践丨SpringBoot整合Mybatis-Plus项目存在Mapper时报错

    本文分享自华为云社区<SpringBoot整合MybatisPlus项目存在Mapper时运行报错的问题分析与修复>,作者:攻城狮Chova . 异常信息 在SpringBoot运行测试M ...

  7. Android登录注册功能加密处理

    <Android使用OKhttp3实现登录注册功能+springboot搭建后端>这篇教程介绍了登录注册的流程及基本实现.但是有一些小问题.就是后端处理的时候,URL将用户名密码使用明文加 ...

  8. Spring Boot + MyBatis :登录注册功能

    ** 个人博客:[http://wj2y.cn/] ** 1. 编写实体类 用户登录注册这里做的比较简单,只做了用户名和密码,所以实体类User.java中只需要username.password两个 ...

  9. Django(二)精美博客搭建(1)实现登录/注册功能

    前言 之前我们用Django框架做了一个很简单的个人博客搭建,不论是页面还是功能都很粗糙 所以从这篇开始我打算做一个比较完整的[个人博客网站],可能会分好几篇博客来讲述 等所有功能完善的差不多后,再考 ...

最新文章

  1. leetcode算法题--有序数组中的单一元素
  2. linux下的PHP和windows下的php的区别
  3. Item03. 设计模式 Item04. STL
  4. MIME type类型
  5. 机器人总动员拟人后_WALL·E 机器人总动员——又是一部让名字耽误的高分电影...
  6. [图解]红旗Linux6.0下如何安装VMWARE TOOLS
  7. MySQL慢查询分析方法
  8. SVN代码更新群发邮件通知
  9. ubuntu下MySQL的安装及远程连接配置(转)
  10. 同济大学高等数学下册第十章重积分以及每日一题
  11. android 360 悬浮窗,悬浮窗的实现(如360悬浮窗效果)
  12. 测试小故事82:好好说话
  13. 带宽,传输速率,吞吐量三者之间的关系与区别
  14. 一个案例,看懂用户画像如何做出效益
  15. Period、Duration计算时间间隔
  16. linux Nginx服务的安装及使用
  17. 242. 有效的字母异位词 349. 两个数组的交集
  18. 连接不上oracle数据库
  19. [ web 漏洞篇 ] 常见web漏洞总结之 SQL 注入总结
  20. Scala class和case class的区别

热门文章

  1. uni-app活动倒计时功能
  2. 阿里云盘和 Teambition 网盘
  3. 教你利用阿里云服务器搭建一个随时随地的Web IDE
  4. 微信公众号注册操作流程
  5. 51Nod 1228 序列求和
  6. 小程序:浅谈小程序更新机制,发版后多久能全覆盖
  7. 聊天系统:服务端 + 客户端 + web端
  8. SONET和SDH技术简介
  9. SONET/SDH帧格式
  10. 口渴·冰绿茶心情 -旧文