通过springboot+mybatis

您所在的位置:网站首页 联想邮箱登录和手机号登录 通过springboot+mybatis

通过springboot+mybatis

2024-07-04 18:47:10| 来源: 网络整理| 查看: 265

通过springboot+mybatis-plugs实现通过手机号,邮箱,账号登录

1:导入需要的依赖

com.ruoyi ruoyi 2.4.0 4.0.0 ruoyi-auth ruoyi-auth认证授权中心 org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-actuator mysql mysql-connector-java com.ruoyi ruoyi-common-security com.alibaba druid-spring-boot-starter 1.1.10 org.projectlombok lombok 1.18.12 provided com.baomidou mybatis-plus-boot-starter 3.3.2

2:配置yml文件

# Tomcat server: port: 9200 # Spring spring: datasource: druid: url: ${MYSQL_URL:jdbc:mysql://localhost:3306/mymodule?characterEncoding=utf-8&serverTimezone=UTC} username: root password: 123456 driverClassName: com.mysql.cj.jdbc.Driver initialSize: 5 #初始建立连接数量 minIdle: 5 #最小连接数量 maxActive: 20 #最大连接数量 maxWait: 10000 #获取连接最大等待时间,毫秒 testOnBorrow: true #申请连接时检测连接是否有效 testOnReturn: false #归还连接时检测连接是否有效 timeBetweenEvictionRunsMillis: 60000 #配置间隔检测连接是否有效的时间(单位是毫秒) minEvictableIdleTimeMillis: 300000 #连接在连接池的最小生存时间(毫秒) mybatis-plus: configuration: map-underscore-to-camel-case: true log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

2:定义全局异常处理器(拦截自定义异常并处理)

package com.ruoyi.auth.utils.handler; import com.ruoyi.auth.utils.Result.JSONResult; import com.ruoyi.auth.utils.exception.CustomerException; import com.ruoyi.common.core.exception.BaseException; import com.ruoyi.common.core.web.domain.AjaxResult; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.RestControllerAdvice; import javax.servlet.http.HttpServletResponse; /** * 全局异常处理器 * * @author ruoyi */ @RestControllerAdvice public class GlobalExceptionHandler { private static final Logger log = LoggerFactory.getLogger(GlobalExceptionHandler.class); /** * 基础异常 */ @ExceptionHandler(BaseException.class) public AjaxResult baseException(BaseException e) { return AjaxResult.error(e.getDefaultMessage()); } /** * 自定义异常 */ @ExceptionHandler(CustomerException.class) public JSONResult handlerInsertException(CustomerException e, HttpServletResponse response) { String errMsg = e.getMsg(); Integer status = e.getStatus(); JSONResult jsonResult = new JSONResult(); jsonResult.setMsg(errMsg); response.setStatus(status); return jsonResult; } }

3:创建CustomerException(以便后续创建异常便于管理)

package com.ruoyi.auth.utils.exception; import lombok.Data; @Data public class CustomerException extends RuntimeException { // 异常信息 protected String msg; // 响应状态码 200 404 500 400参数错误 protected Integer status; }

4:创建NotFoundException(查询用户失败时可以抛出此异常)

package com.ruoyi.auth.utils.exception; public class NotFoundException extends CustomerException { public NotFoundException(String msg) { this.msg = msg; // 获取资源失败 this.status = 404; } }

5:创建JSONResult类,用来返回前端需要的数据格式

package com.ruoyi.auth.utils.Result; import lombok.Data; /** * 公共返回对象 */ @Data public class JSONResult { private String msg; private T data; public static JSONResult ok(Object data) { JSONResult jsonResult = new JSONResult(); jsonResult.setMsg("ok"); jsonResult.setData(data); return jsonResult; } public static JSONResult ok(String msg) { JSONResult jsonResult = new JSONResult(); jsonResult.setMsg(msg); jsonResult.setData(null); return jsonResult; } public static JSONResult fail(String msg) { JSONResult jsonResult = new JSONResult(); jsonResult.setMsg(msg); return jsonResult; } public static JSONResult ok(String msg, Object data) { JSONResult jsonResult = new JSONResult(); jsonResult.setMsg(msg); jsonResult.setData(data); return jsonResult; } }

以上将所需要的包和相应的配置类都写好了 接下来就写业务代码

6:用户实体User

package com.ruoyi.auth.form; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonIgnore; import lombok.Data; import java.sql.Date; @Data @TableName("user") public class User { @TableId(type = IdType.AUTO) private Integer id; private String username; private String password; private String email; private String phone; private Integer gender; private String idNumber; private String icon; private String idPicture; private String banned; private String handler; // private TextType textType; // private String count; @JsonIgnore private java.sql.Date createdTime; @JsonIgnore private Date updateTime; }

6:mapper层:UserMapper接口

package com.ruoyi.auth.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.auth.form.User; import org.springframework.stereotype.Repository; @Repository public interface UserMapper extends BaseMapper { }

7:service层:UserServiceImpl 实现UserService 接口

package com.ruoyi.auth.serviceImpl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.ruoyi.auth.form.User; import com.ruoyi.auth.mapper.UserMapper; import com.ruoyi.auth.service1.UserService; import com.ruoyi.auth.utils.exception.ExistedException; import com.ruoyi.auth.utils.exception.NotFoundException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.Map; @Service public class UserServiceImpl implements UserService { @Autowired private UserMapper userMapper; @Override public void addUser(User user) { if (isUserNameExisted(user.getUsername(),user.getId())){ throw new ExistedException("已经存在该用户名"); } userMapper.insert(user); } @Override public User selectUserByPhone(Map map) { QueryWrapper userQueryWrapper = new QueryWrapper(); userQueryWrapper.eq("phone",map.get("phone")); userQueryWrapper.eq("password",map.get("password")); User user = userMapper.selectOne(userQueryWrapper); if (user==null) { throw new NotFoundException("手机号或者密码错误"); } return user; } @Override public User selectUserByEmail(Map map) { QueryWrapper queryWrapper = new QueryWrapper(); queryWrapper.eq("email",map.get("email")); queryWrapper.eq("password",map.get("password")); User user = userMapper.selectOne(queryWrapper); if (user==null) { throw new NotFoundException("邮箱或者密码错误"); } return user; } @Override public User selectUserByUsername(Map map) { QueryWrapper wrapper = new QueryWrapper(); wrapper.eq("username",map.get("username")); wrapper.eq("password",map.get("password")); User user = userMapper.selectOne(wrapper); if (user==null) { throw new NotFoundException("账号或者密码错误"); } return user; } public boolean isUserNameExisted(String username,Integer id){ QueryWrapper userQueryWrapper = new QueryWrapper(); userQueryWrapper.eq("username",username); if (id != null && id > 0){ userQueryWrapper.ne("id",id); } User user = userMapper.selectOne(userQueryWrapper); return user != null; } }

8:service层:UserService 接口

package com.ruoyi.auth.service1; import com.ruoyi.auth.form.User; import java.util.Map; public interface UserService { void addUser(User user); User selectUserByPhone(Map map); User selectUserByEmail(Map map); User selectUserByUsername(Map map); }

9:controller层:

package com.ruoyi.auth.controller; import com.ruoyi.auth.form.User; import com.ruoyi.auth.service1.UserService; import com.ruoyi.auth.utils.Result.JSONResult; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.Map; @RestController @RequestMapping("/user") public class UserController { @Autowired private UserService userService; //用户注册 @PostMapping("/register") public void addUser(@RequestBody User user) { userService.addUser(user); } //更新用户 @PutMapping("/update") public void updateUserById(){ } //用户登录 @PostMapping("/login") public JSONResult login(Map map, @RequestBody User user) { String username = user.getUsername(); String psd = user.getPassword(); //判断是邮箱还是手机号的正则表达式 String email = "^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$"; String phone = "^[1][34578]\\d{9}$"; if (username.matches(phone)) {//手机号登录 map.put("phone", username); map.put("password", psd); User phone1 = userService.selectUserByPhone(map); if (phone != null) { return JSONResult.ok("登录成功"); } } else if (username.matches(email)) {//邮箱登录 map.put("email", username); map.put("password", psd); User email1 = userService.selectUserByEmail(map); if (email1 != null) { return JSONResult.ok("登录成功"); } } else {//就是用户名登录 map.put("username", username); map.put("password", psd); User result = userService.selectUserByUsername(map); if (result != null) { return JSONResult.ok("登录成功"); } } return null; } }

10:启动类

package com.ruoyi.auth; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import com.ruoyi.common.security.annotation.EnableRyFeignClients; /** * 认证授权中心 * * @author ruoyi */ //@EnableRyFeignClients //@SpringCloudApplication @MapperScan("com.ruoyi.auth.mapper") @SpringBootApplication public class RuoYiAuthApplication { public static void main(String[] args) { SpringApplication.run(RuoYiAuthApplication.class, args); System.out.println("(♥◠‿◠)ノ゙ 认证授权中心启动成功 ლ(´ڡ`ლ)゙ \n" + " .-------. ____ __ \n" + " | _ _ \\ \\ \\ / / \n" + " | ( ' ) | \\ _. / ' \n" + " |(_ o _) / _( )_ .' \n" + " | (_,_).' __ ___(_ o _)' \n" + " | |\\ \\ | || |(_,_)' \n" + " | | \\ `' /| `-' / \n" + " | | \\ / \\ / \n" + " ''-' `'-' `-..-' "); } }

运行结果 1:账号登录 账号登录 2:手机登录 手机登录 3 邮箱登录 在这里插入图片描述 所以根据这三种情况登录就完成了!!



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭