创建项目
创建项目目录
编辑pom.xml文件
4.0.0 com.jt jt0.0.1-SNAPSHOT jt jt 1.8 UTF-8 UTF-8 2.4.1 org.springframework.boot spring-boot-starter-weborg.springframework.boot spring-boot-starter-testtest org.springframework.boot spring-boot-devtoolsorg.projectlombok lombokorg.mybatis.spring.boot mybatis-spring-boot-starter2.2.0 mysql mysql-connector-javaorg.springframework.boot spring-boot-dependencies${spring-boot.version} pom import org.apache.maven.plugins maven-compiler-plugin3.8.1 1.8 1.8 UTF-8 org.springframework.boot spring-boot-maven-plugin2.4.1 com.jt.SpringbootDemo1Application repackage repackage
在controller包中创建类
UserController类
package com.jt.controller;
import com.jt.pojo.User;
import com.jt.service.UserService;
import com.jt.vo.SysResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@CrossOrigin
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
@GetMapping("/findAll")
public List findAll(){
return userService.findAll();
}
@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);
}
}
RightsController类
package com.jt.controller;
import com.jt.pojo.Rights;
import com.jt.service.RightsService;
import com.jt.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 list = rightsService.getRightsList();
return SysResult.success(list);
}
}
创建mapper包
创建UserMapper接口
package com.jt.mapper;
import com.jt.pojo.User;
import org.apache.ibatis.annotations.Select;
import java.util.List;
public interface UserMapper {
List findAll();
@Select("select * from user where username=#{username} and password=#{password}")
User findUserByUP(User user);
}
创建RightsMapper接口
package com.jt.mapper;
import com.jt.pojo.Rights;
import java.util.List;
public interface RightsMapper {
List getRightsList();
}
创建pojo包
basePojo类
package com.jt.pojo;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Date;
@Data
@Accessors(chain=true)
public class basePojo implements Serializable{
private Date created; //表示入库时需要赋值
private Date updated; //表示入库/更新时赋值.
}
Item类
package com.jt.pojo;
import lombok.Data;
import lombok.experimental.Accessors;
@Data
@Accessors(chain = true)
public class Item extends basePojo{
private Integer id; //商品Id号
private String title; //商品标题信息
private String sellPoint; //卖点信息
private Integer price; //商品价格
private Integer num; //商品数量
private String images; //商品图片
private Integer itemCatId; //商品分类ID号
private Boolean status; //状态信息 0 下架 1 上架
}
ItemCat类
package com.jt.pojo;
import lombok.Data;
import lombok.experimental.Accessors;
import java.util.List;
@Data
@Accessors(chain = true)
public class ItemCat extends basePojo{
private Integer id; //定义主键
private Integer parentId; //定义父级菜单
private String name; //分类名称
private Boolean status; //分类状态 0 停用 1 正常
private Integer level; //商品分类等级 1 2 3
private List children;
}
ItemDesc类
package com.jt.pojo;
import lombok.Data;
import lombok.experimental.Accessors;
@Data
@Accessors(chain = true)
public class ItemDesc extends basePojo{
private Integer id;
private String itemDesc;
}
Rights类
package com.jt.pojo;
import lombok.Data;
import lombok.experimental.Accessors;
import java.util.List;
@Data
@Accessors(chain = true)
public class Rights extends basePojo{
private Integer id;
private String name;
private Integer parentId;
private String path;
private Integer level;
private List children; //不是表格固有属性
}
User类
package com.jt.pojo;
import lombok.Data;
import lombok.experimental.Accessors;
@Data
@Accessors(chain = true)
public class User extends basePojo{
private Integer id;
private String username;
private String password;
private String phone;
private String email;
private Boolean status;
}
创建service包
UserService接口
package com.jt.service;
import com.jt.pojo.User;
import java.util.List;
public interface UserService {
List findAll();
String findUserByUP(User user);
}
UserServiceImpl类
package com.jt.service;
import com.jt.mapper.UserMapper;
import com.jt.pojo.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.DigestUtils;
import java.util.List;
import java.util.UUID;
@Service
public class UserServiceImpl implements UserService{
@Autowired
private UserMapper userMapper;
@Override
public List findAll() {
return userMapper.findAll();
}
//根据u/p查询数据库
@Override
public String findUserByUP(User user) {
//1.将密码加密
byte[] bytes = user.getPassword().getBytes();
String md5Pass = DigestUtils.md5DigestAsHex(bytes);
System.out.println(md5Pass);
user.setPassword(md5Pass);
//2.根据用户名和密文查询数据库
User userDB = userMapper.findUserByUP(user);
//3.判断userDB是否有值
if(userDB == null){
//查询没有数据.返回null
return null;
}
//秘钥特点: 唯一性,迷惑性 UUID:几乎可以保证唯一性
return UUID.randomUUID().toString().replace("-","");
}
}
RightsService接口
package com.jt.service;
import com.jt.pojo.Rights;
import java.util.List;
public interface RightsService {
List getRightsList();
}
RightsServiceImpl类
package com.jt.service;
import com.jt.mapper.RightsMapper;
import com.jt.pojo.Rights;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class RightsServiceImpl implements RightsService{
@Autowired
private RightsMapper rightsMapper;
@Override
public List getRightsList() {
return rightsMapper.getRightsList();
}
}
创建vo包
ItemVO类
package com.jt.vo;
import com.jt.pojo.Item;
import com.jt.pojo.ItemDesc;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
@Data
@Accessors(chain = true)
@NoArgsConstructor
@AllArgsConstructor
public class ItemVO { //该对象封装商品所有的参数信息
private Item item;
private ItemDesc itemDesc;
}
SysResult类
package com.jt.vo;
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; //200正常 201失败
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,Object data){
return new SysResult(200,msg,data);
}
}
启动类
package com.jt;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@MapperScan("com.jt.mapper")
public class SpringBootRun {
public static void main(String[] args) {
SpringApplication.run(SpringBootRun.class, args);
}
}
创建resources包
创建UserMapper.xml文件
创建RightsMapper.xml文件
编辑application.yml文件
server:
port: 8091
#整合1.数据源
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/jt?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true
username: root
password: root
#关于密码0 开头的说明
#password: "0123456"
#SpringBoot整合mybatis
mybatis:
#指定别名包
type-aliases-package: com.jt.pojo
#加载指定的xml映射文件
mapper-locations: classpath:/mybatis/mappers
border-radius: 10px;
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
.avatar_box {
height: 130px;
width: 130px;
border: 1px solid #EEEEEE;
border-radius: 50%;
padding: 10px;
box-shadow: 0 0 10px #DDDDDD;
position: absolute;
left: 50%;
transform: translate(-50%,-50%);
background-color: #FFFFFF;
img {
height: 100%;
width: 100%;
border-radius: 50%;
background-color: #EEEEEE;
}
}
.btns {
display: flex;
justify-content: flex-end;
}
.login_form {
position: absolute;
bottom: 0;
width: 100%;
padding: 0 20px;
box-sizing: border-box;
}
}
index.js
import Vue from 'vue'
import VueRouter from 'vue-router'
import Login from '../components/Login.vue'
import ElementUI from '../components/ElementUI.vue'
import Home from '../components/Home.vue'
//使用路由机制
Vue.use(VueRouter)
const routes = [
{path: '/', redirect: '/login'},
{path: '/login', component: Login},
{path: '/elementUI', component: ElementUI},
{path: '/home', component: Home}
]
//路由导航守卫!!!!!!!
const router = new VueRouter({
routes
})
router.beforeEach((to,from,next) => {
if(to.path === '/login'){
//直接跳转并且结束代码
return next()
}
//2.判断是否有token
let token = window.sessionStorage.getItem("token")
if(token !== null && token !==''){ //更加安全
//有值,跳转指定页面
return next()
}
//3.如果数据为空则跳转到登录页面
next('/login')
})
//路由对象的使用
export default router
启动App.vue文件
输入http://localhost: 8080/
点击登录
补充
表内数据 自定义。。。



