1,用户登录及左菜单显示
1.1.用户登录
1.1.1.构建springboot及mybatis项目
1.1.2.编辑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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.jt</groupId>
<artifactId>jt</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>jt</name>
<description>jt</description>
<!--只需要复制 除了坐标之外的文件即可-->
<properties>
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<spring-boot.version>2.4.1</spring-boot.version>
</properties>
<dependencies>
<!--springBoot整合mvc-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--springBoot整合测试方法-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!--支持热部署 开发阶段有效-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
<!--引入插件lombok 自动的set/get/构造方法插件 -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<!--mybatis依赖包-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.2.0</version>
</dependency>
<!--jdbc依赖包-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.4.1</version>
<configuration>
<mainClass>com.jt.SpringbootDemo1Application</mainClass>
</configuration>
<!--排除一些指定的配置-->
<executions>
<execution>
<id>repackage</id>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
1.1.3用户登录业务接口
请求路径: /user/login
请求方式: POST
请求参数
参数名称 参数说明 备注
username 用户名 不能为空
password 密码 不能为空
响应数据: SysResult对象
参数名称 参数说明 备注
status 状态信息 200表示服务器请求成功 201表示服务器异常
msg 服务器返回的提示信息 可以为null
data 服务器返回的业务数据 返回密钥token信息
1.1.4编辑SysResult对象
import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import lombok.experimental.Accessors; @Data @Accessors(chain = true) @NoArgsConstructor @AllArgsConstructor public class SysResult { private Integer status; private String msg; private Object data; public static SysResult fail(){ return new SysResult(201,"服务器调用失败",null); } public static SysResult success(){ return new SysResult(200,"服务器调用成功",null); } public static SysResult success(Object data){ return new SysResult(200,"服务器调用成功",data); } public static SysResult success(String msg){ return new SysResult(200,msg,null); } public static SysResult success(String msg,Object data){ return new SysResult(200,msg,data); } }
1.1.5.用户登录的流程
1用户输入用户名和密码 admit123/admit123456(在数据库里面的User表里的数据)点击
2通过vue中的axios发起post请求/user/login,实现用户登录
3在UserController中接收用户的请求和参数(json)
4先将密码进行加密(MD5),根据参数查询数据库
查询成功有数据,输入正确,有且只有一个数据
查询失败没有数据,输入有误
5如果登录成功,则返回token的密钥(安全性),利用SysResult对象返回
1.1.6. 编辑UserController
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
@PostMapping("/login")
public SysResult login(@RequestBody User user){
String token = userService.findUserByUp(user);
if (token ==null && "".equals(token)){
return SysResult.fail();
}
return SysResult.success(token);
}
}
1.1.7编辑UserService接口及UserServiceImpl(对密码进行加密处理)
1.1.7.1.UserService接口
import com.jt02.pojo.User;
public interface UserService {
String findUserByUp(User user);
}
1.1.7.2.UserServiceImpl
import com.jt02.mapper.UserMapper;
import com.jt02.pojo.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.DigestUtils;
import java.util.UUID;
@Service
public class UserServiceImpl implements UserService{
@Autowired
private UserMapper userMapper;
@Override
public String findUserByUp(User user) {
byte[] bytes = user.getPassword().getBytes();
String md5pass = DigestUtils.md5DigestAsHex(bytes);
User userDB=userMapper.findUserByUP(user);
if (userDB == null){
return null;
}
return UUID.randomUUID().toString().replace("-","");
}
}
1.1.8.编辑UserMapper
@Select("select * from user where username=#{username} and password=#{password}") User findUserByUP(User user);
1.2.左菜单显示
1.2.1.业务接口
请求路径 /rights/getRightsList
请求类型 GET
请求参数 无
响应数据 SysResult对象
参数名称 参数说明 备注
status 状态信息 200表示服务器请求成功 201表示服务器异常
msg 服务器返回的提示信息 可以为null
data 服务器返回的业务数据 返回权限List集合
1.2.2.创建RightsController
import com.jt02.pojo.Rights;
import com.jt02.service.RightsService;
import com.jt02.vo.SysResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
@CrossOrigin
@RequestMapping("/rights")
public class RightsController {
@Autowired
private RightsService rightsService;
@GetMapping("/getRightsList")
public SysResult getRightsList(){
List<Rights> list = rightsService.getRightsList();
return SysResult.success(list);
}
}
1.2.3创建RightdService接口及RightServiceImpl
import com.jt02.pojo.Rights;
import java.util.List;
public interface RightsService {
List<Rights> getRightsList();
}
import com.jt02.mapper.RightsMapper;
import com.jt02.pojo.Rights;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class RightServiceImpl implements RightsService {
@Autowired
private RightsMapper rightsMapper;
@Override
public List<Rights> getRightsList() {
return rightsMapper.getRightsList();
}
}
1.2.4.编辑RightsMapper接口
import com.jt02.pojo.Rights;
import java.util.List;
public interface RightsMapper {
List<Rights> getRightsList();
}
2.用户管理模块
2.1用户列表
2.1.1用户列表的业务接口
请求路径: /user/list
请求类型: GET
请求参数: 后台使用PageResult对象接收
请求案例: http://localhost:8091/user/list?query=查询关键字&pageNum=1&pageSize=10
参数名称 参数说明 备注信息
query 用户查询的数据 可以为null
pageNum 分页查询的页数 必须赋值不能为null
pageSize 分页查询的条数 必须赋值不能为null
响应参数: SysResult对象 需要携带分页对象 PageResult
参数名称 参数说明 备注信息
status 状态信息 200表示服务器请求成功 201表示服务器异常
msg 服务器返回的提示信息 可以为null
data 服务器返回的业务数据 返回值PageResult对象
PageResult 对象介绍
参数名称 参数类型 参数说明 备注信息
query String 用户查询的数据 可以为null
pageNum Integer 查询页数 不能为null
pageSize Integer 查询条数 不能为null
total Long 查询总记录数 不能为null
rows Object 分页查询的结果 不能为null
2.1.2.编辑PageResult工具类
package com.jt02.vo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
@Data
@Accessors(chain = true)
@NoArgsConstructor
@AllArgsConstructor
public class PageResult {
private String query;//查询数据
private Integer pageNum;//页数
private Integer pageSize;//条数
private Long total;//总数
private Object rows; //查询结果
}
2.1.3.编辑userController
@GetMapping("/list") public SysResult getUserListByPage(PageResult pageResult){ pageResult = userService.getUserListByPage(pageResult); return SysResult.success(pageResult); }
2.1.4.编辑UserService接口及UserServiceImpl实体类
PageResult getUserListByPage(PageResult pageResult);
@Override
public PageResult getUserListByPage(PageResult pageResult) {
//1.总数
long total = userMapper.findTotal();
//2.分页结果
int size = pageResult.getPageSize(); //条数
int start = (pageResult.getPageNum()-1) * size; //起始位置
String query = pageResult.getQuery(); //查询条件
//查询分页数据
List<User> userList =
userMapper.findUserListByPage(start,size,query);
//将返回值结果进行封装
return pageResult.setTotal(total).setRows(userList);
}
2.1.5.编辑Usermapper接口
@Select("select count(1) from user") long findTotal(); //将多值封装为单值 一般使用对象/集合/Map List<User> findUserListByPage(@Param("start") int start, @Param("size") int size, @Param("query") String query);
2.1.6.在Usermapper.xml里编写SQL语句
<select id="findUserListByPage" resultType="com.jt02.pojo.User">
SELECT * FROM USER
<where>
<if test="query !=null and query !=''">username LIKE "%"#{query}"%"</if>
</where>
LIMIT #{start},#{size}
</select>
3:运行结果示意图
: