栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【良心推荐】手摸手带你做Springboot + mybatis plus + shiro + redis 后台管理项目(第一章)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【良心推荐】手摸手带你做Springboot + mybatis plus + shiro + redis 后台管理项目(第一章)

前情提要(都是干货)

项目从最初的SpringBoot + mybatis 进行整合,慢慢增加shiro、redis框架
由浅入深的进行整合,一点一点讲解,内容可能稍微啰嗦,慢慢学还是有收获的。项目截图在下面

  • 第一章: 搭建环境以及整合mybatis plus
  • 第二章: 登陆和用户管理
  • 第三章: 整合shiro 设置用户密码加密
  • 第四章: 整合redis和动态权限以及动态目录
  • 第五章: 整合knife4j 生成好看的开发文档
  • 第六章: Linux环境搭建与发布上线

工具
  • idea
  • JDK8
后端使用技术

前端使用技术

项目截图



结构

开始正文 创建一个Maven项目


修改pom文件
添加如下

	jar
    
        org.springframework.boot
        spring-boot-starter-parent
        2.4.4
    
    
        1.18.16
        2.1.3
        1.2.74
        3.3.2
        1.1.13
        1.2.13
        5.7.13
    

        
    
        
            org.springframework.boot
            spring-boot-starter-web
        
        
            org.projectlombok
            lombok
            ${lombok.version}
        
        
            mysql
            mysql-connector-java
        
        
            com.alibaba
            fastjson
            ${fastjson.version}
        
        
            org.mybatis.spring.boot
            mybatis-spring-boot-starter
            ${mybatis.version}
        
        
            com.baomidou
            mybatis-plus-boot-starter
            ${plus.version}
        
        
            org.springframework.boot
            spring-boot-starter-thymeleaf
        
        
            org.springframework.boot
            spring-boot-devtools
            true
        
        
            com.alibaba
            druid-spring-boot-starter
            ${druid.version}
        
        
            com.github.pagehelper
            pagehelper-spring-boot-starter
            ${pagehelper.version}
        
        
            cn.hutool
            hutool-all
            ${hutool-version}
        
    
在demo中添加以下文件

ApplicationBoot在macro包下

controller代码
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class IndexController {

    @GetMapping(value = {"index","","/"})
    public String index(){
        return "你好,我是无术同学!";
    }
}
ApplicationBoot代码
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class ApplicationBoot {

    public static void main(String[] args) {
        ConfigurableApplicationContext context = SpringApplication.run(ApplicationBoot.class);
        //从yml中读取项目的启动端口,若是填写项目名称,也可获取
        String port = context.getEnvironment().getProperty("server.port");
        System.out.println("访问地址: http://127.0.0.1:" + port);
    }
}

application.yml (目前只是在本地新建一个csdn的库,没添加表)
server:
  port: 8086
spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    druid:
      driver-class-name: com.mysql.cj.jdbc.Driver
      url: jdbc:mysql://127.0.0.1:3306/csdn?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
      username: root
      password: 123456
      initial-size: 10
      max-active: 100
      min-idle: 10
      max-wait: 60000
      pool-prepared-statements: true
      max-pool-prepared-statement-per-connection-size: 20
      time-between-eviction-runs-millis: 60000
      min-evictable-idle-time-millis: 300000
      test-while-idle: true
      test-on-borrow: false
      test-on-return: false
      stat-view-servlet:
        enabled: true
        url-pattern: /druid/*
      filter:
        stat:
          log-slow-sql: true
          slow-sql-millis: 1000
          merge-sql: false
        wall:
          config:
            multi-statement-allow: true


启动运行,看一下项目是否成功
访问地址: http://127.0.0.1:8086/ 看到一下文字则是项目运行成功!

整合框架

上面的pom文件中已经加入了mysql驱动和mybatis、mybatis plus框架
整体目录:

  ─src
    └─main
        ├─java
        │  └─com
        │      └─macro
        │          ├─controller     存放controller 
        │          ├─dao			数据库操作接口
        │          ├─entity			存放实体类
        │          ├─service		service接口
        │          │  └─impl		service接口的实现类
        │          └─utils			存放工具类
        └─resources
            └─mapper				存放xml,映射dao层

数据库新增系统管理人员sys_user表,字段如下:

id键别忘加自动递增、主键唯一、不为null

配置文件和添加文件

完整yml文件

server:
  port: 8086
spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    druid:
      driver-class-name: com.mysql.cj.jdbc.Driver
      url: jdbc:mysql://127.0.0.1:3306/csdn?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
      username: root
      password: 123456
      initial-size: 10
      max-active: 100
      min-idle: 10
      max-wait: 60000
      pool-prepared-statements: true
      max-pool-prepared-statement-per-connection-size: 20
      time-between-eviction-runs-millis: 60000
      min-evictable-idle-time-millis: 300000
      test-while-idle: true
      test-on-borrow: false
      test-on-return: false
      stat-view-servlet:
        enabled: true
        url-pattern: /druid/*
      filter:
        stat:
          log-slow-sql: true
          slow-sql-millis: 1000
          merge-sql: false
        wall:
          config:
            multi-statement-allow: true
# mybatis映射的xml文件
mybatis:
  mapper-locations: classpath:mapper/*.xml


# springboot 中打印,不需要添加新依赖
logging:
  level:
    com.macro.dao : debug

修改ApplicationBoot

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;

@SpringBootApplication
@MapperScan("com.macro.dao")
public class ApplicationBoot {

    public static void main(String[] args) {
        ConfigurableApplicationContext context = SpringApplication.run(ApplicationBoot.class);
        //从yml中读取项目的启动端口,若是填写项目名称,也可获取
        String port = context.getEnvironment().getProperty("server.port");
        System.out.println("访问地址: http://127.0.0.1:" + port);
    }
}


新增以下类

UserEntity类

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;

@Data
//定义插入哪张表
@TableName("sys_user")
@NoArgsConstructor
@AllArgsConstructor
public class UserEntity implements Serializable {

    @TableId(value = "id",type = IdType.AUTO)
    private Integer id;

    //N大写会被mybatis plus转化为_n
    private String niceName;

    private String username;

    private String password;

    private String avatar;

    private Integer sex;

}

UserDao 接口继承baseMapper

import com.baomidou.mybatisplus.core.mapper.baseMapper;
import com.macro.entity.UserEntity;

public interface UserDao extends baseMapper {

}

UserService接口继承IService

import com.baomidou.mybatisplus.extension.service.IService;
import com.macro.entity.UserEntity;

public interface UserService extends IService {
}

UserService接口的实现类UserServiceImpl

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.macro.dao.UserDao;
import com.macro.entity.UserEntity;
import com.macro.service.UserService;
import org.springframework.stereotype.Service;

@Service
public class UserServiceImpl extends ServiceImpl implements UserService {

}

Result工具类

@Data
public class Result {
    private Integer code;
    private String msg;
    private Object data;

    Result(Integer code, String msg, Object data){
        this.code = code;
        this.msg = msg;
        this.data = data;
    }

    public static Result success(Object data){
        return new Result(200,"成功",data);
    }
    public static Result success(){
        return new Result(200,"成功",null);
    }

    public static Result error(Integer code, String msg){
        return new Result(code,msg,null);
    }

    public static Result error(String msg){
        return new Result(400,msg,null);
    }
}

数据库中添加一条数据

IndexController添加一条查询方法

import com.macro.entity.UserEntity;
import com.macro.service.UserService;
import com.macro.utils.Result;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class IndexController {

    @Autowired
    private UserService userService;

    @GetMapping("info/{id}")
    public Result info(@PathVariable Integer id){
        UserEntity entity = userService.getById(id);
        return Result.success(entity);
    }




}

启动访问 http://127.0.0.1:8086/info/1
1就是数据的id值

总结
第一篇项目的架子已经搭建起来了

好多东西没有都没有细细说明

像 @RestController 注解,就是@Controller ,@ResponseBody 的组合体,返回json格式数据就不用加@ResponseBody了

但是跳转页面不可使用此注解,谨记!

还有service接口中的IService以及service的实现类中集成的ServiceImpl 都是mybatis plus 提供的类,包含一些增删改查方法

省去一部分时间写代码,很实用,还有UserDao集成的接口也是mybatis plus 提供的类

源码

在公众号内发送后台即可获取源码和数据库

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/284083.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号