• 快速搭建一个简单的SpringBoot项目-详细步骤


    目录

    快速搭建一个简单的SpringBoot项目

    前言

    • 本文章仅供大家参考,如果对大家有起到帮助的话可以点赞支持一下~
    • 主要发布是为了本人以后能方便的搭建一个SpringBoot项目的框架!!!
    • 源码路径在文章最下方!

    第一步新建项目

    1.选择Spring Initializr

    在这里插入图片描述

    2.点击下一步

    在这里插入图片描述

    3.修改jdk的版本,再点击下一步

    在这里插入图片描述

    4.选中Spring Web,再下一步

    在这里插入图片描述

    5.给项目文件命名,再点击完成

    在这里插入图片描述

    这样子就会生成一个项目,如下图所示

    在这里插入图片描述

    下图中这些文件如果没有需要的情况下一般就直接删掉就好了!

    在这里插入图片描述

    第二步导入依赖

    按照上面的步骤完成的打开pom.xml文件的配置依赖应该和我的是一样的!

    在这里插入图片描述

    接着我们添加一些需要的依赖

    SpringBoot项目需要提供一个接口去拿到数据所有在这里我们需要能连接数据库的配置

    		
            
                org.mybatis.spring.boot
                mybatis-spring-boot-starter
                2.1.1
            
    		
            
                mysql
                mysql-connector-java
            
    		
            
                com.alibaba
                druid-spring-boot-starter
                1.2.8
            
    		
            
                org.projectlombok
                lombok
            
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    第三步配置Application

    新建一个application.yml文件 (使用aplication.properties也是可以的,只是本人一般使用.yml格式的)

    在这里插入图片描述

    配置项目需要修改的端口号、datasource、mybatis。

    在这里插入图片描述

    server:
      #设置端口号
      port: 8081 #默认端口是8080
    spring:
      datasource:
        #数据库用户名
        username: root
        #数据库用户密码
        password: 123456
        #serverTimezone=UTC 解决市区的报错 一般mysql是8.0以上的是必须配置这个
        #userUnicode=true&characterEncoding=utf-8 指定字符编码、解码格式
        url: jdbc:mysql://localhost:3306/metest?serverTimezone=UTC&userUnicode=true&characterEncoding=utf-8
        #设置驱动类
        driver-class-name: com.mysql.cj.jdbc.Driver
        #设置数据源
        type: com.alibaba.druid.pool.DruidDataSource
    
        #Spring Boot 默认是不注入这些属性值的,需要自己绑定
        #druid 数据源专有配置
        initialSize: 5
        minIdle: 5
        maxActive: 20
        maxWait: 60000
        timeBetweenEvictionRunsMillis: 60000
        minEvictableIdleTimeMillis: 300000
        validationQuery: SELECT 1 FROM DUAL
        testWhileIdle: true
        testOnBorrow: false
        testOnReturn: false
        poolPreparedStatements: true
        #配置监控统计拦截的filters,stat:监控统计、log4j:日志记录、wall:防御sql注入
        #如果允许时报错  java.lang.ClassNotFoundException: org.apache.log4j.Priority
        #则导入 log4j 依赖即可,Maven 地址:https://mvnrepository.com/artifact/log4j/log4j
        filters: stat,wall,log4j
        maxPoolPreparedStatementPerConnectionSize: 20
        useGlobalDataSourceStat: true
        connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500
    
    # 配置mybatis
    mybatis:
      #指定pojo扫描包位置让mybatis自动扫描到指定义的pojo包下
      type-aliases-package: com.me.test.pojo
      #指定位置扫描Mapper接口对应的XML文件 classpath:xml文件位置
      mapper-locations: classpath:mapper/*.xml
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44

    第四步创建需要的mapper、service、cotroller层

    创建需要的文件夹

    在这里插入图片描述

    创建数据库

    spl语句代码

    CREATE DATABASE /*!32312 IF NOT EXISTS*/`metest` /*!40100 DEFAULT CHARACTER SET utf8 */;
    
    USE `metest`;
    
    /*Table structure for table `userinfo` */
    
    DROP TABLE IF EXISTS `userinfo`;
    
    CREATE TABLE `userinfo` (
      `id` int(10) NOT NULL AUTO_INCREMENT,
      `username` varchar(30) NOT NULL,
      `password` varchar(30) NOT NULL,
      `authority` varchar(30) NOT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
    
    /*Data for the table `userinfo` */
    
    insert  into `userinfo`(`id`,`username`,`password`,`authority`) values (1,'root','123456','admin'),(2,'me','123456','admin');
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    在这里插入图片描述

    IDEA连接上Mysql数据库(主要为了方便查看创建pojo类和对于的mapper.xml文件)

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    找到需要的数据库

    在这里插入图片描述

    在这里插入图片描述

    一般pojo类、mapper接口、service接口名字都是按照数据库中表的名字来创建的

    创建pojo类

    //使用@Data自动生成需要的get、set
    @Data
    //使用@AllArgsConstructor自动生成有参构造
    @AllArgsConstructor
    //使用@NoArgsConstructor自动生成无参构造
    @NoArgsConstructor
    public class userInfo {
        
        private Integer id;
        private String username;
        private String password;
        private String authority;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    在这里插入图片描述

    创建mapper接口

    @Repository
    @Mapper
    public interface UserInfoMapper {
    
        /**
         * 增加一条数据
         * @param userInfo 数据
         */
        void add(UserInfo userInfo);
    
        /**
         * 删除一条数据
         * @param id 被删除数据的id
         */
        void delete(Integer id);
    
        /**
         * 修改一条数据
         * @param userInfo 修改的数据
         */
        void update(UserInfo userInfo);
    
        /**
         * 根据id去查询一条数据
         * @param id 查询的id
         */
        UserInfo queryById(Integer id);
    
        /**
         * 查询全部数据
         * @return
         */
        List queryAll();
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34

    在这里插入图片描述

    创建对于mapper接口的xml文件

    需要的mapper基本配置

    
    
    
    
    
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    对于接口中的方法在添加需要的增删改查功能

    
    
    
    
    
        
            delete from baling.balingread where id = #{id}
        
        
        
            insert into baling.balingread (book_name, author, type, down_count, introduction)
            values (#{bookName},#{author},#{type},#{downCount},#{introduction});
        
    
        
            update balingread set book_name = #{bookName},author=#{author},type=#{type},down_count=#{downCount},introduction=#{introduction} where id=#{id};
        
    
        
    
        
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29

    图中爆红不用管这个是因为我配置了一个插件的原因,实际在运行时不影响效果!

    在这里插入图片描述

    创建service层

    在这里插入图片描述

    在这里插入图片描述

    UserInfoService代码(其实其中的方法也就是Maper接口中拷贝来的)

    public interface UserInfoService {
        /**
         * 增加一条数据
         * @param userInfo 数据
         */
        void add(UserInfo userInfo);
    
        /**
         * 删除一条数据
         * @param id 被删除数据的id
         */
        void delete(Integer id);
    
        /**
         * 修改一条数据
         * @param userInfo 修改的数据
         */
        void update(UserInfo userInfo);
    
        /**
         * 根据id去查询一条数据
         * @param id 查询的id
         */
        UserInfo queryById(Integer id);
    
        /**
         * 查询全部数据
         * @return
         */
        List queryAll();
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31

    UserInfoServiceImpl代码(主要是做业务逻辑的)

    有需要添加的功能可以直接在这一层添加修改

    @Service
    public class UserInfoServiceImpl implements UserInfoService {
    
        @Autowired
        private UserInfoMapper userInfoMapper;
    
        @Override
        public void add(UserInfo userInfo) {
            userInfoMapper.add(userInfo);
        }
    
        @Override
        public void delete(Integer id) {
            userInfoMapper.delete(id);
        }
    
        @Override
        public void update(UserInfo userInfo) {
            userInfoMapper.update(userInfo);
        }
    
        @Override
        public UserInfo queryById(Integer id) {
            return userInfoMapper.queryById(id);
        }
    
        @Override
        public List queryAll() {
            return userInfoMapper.queryAll();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31

    创建controller层

    这里我先去pom中配置一个fastjson依赖这是阿里巴巴开源的,用来转换成JSON和类的格式的。

    
            
                com.alibaba
                fastjson
                1.2.78
            
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    我使用了RestFull风格去实现路径的请求

    在这里插入图片描述

    代码

    //@Controller 控制层需要的注解
    //@RestController 使用这个也是可以的,但是使用后他里面所有请求返回的都是字符串!
    //一般只需要作为接口放回JSON格式数据的话推荐使用@RestController
    //@Controller这个是可以与Thymeleaf模板引擎使用时可以返回一个页面的
    @Controller
    //@RequestMapping指定路径名
    //@RequestMapping("/test")用这个来指定路径也是可以的
    @RequestMapping(value = "/test")
    public class UserInfoController {
        //获取到UserInfoService
        @Autowired
        private UserInfoService userInfoService;
    
        //Get请求
        @GetMapping
        //@ResponseBody 注释后表示放回的是字符串
        @ResponseBody
        public String queryAll(){
            List userInfoList = userInfoService.queryAll();
            return JSON.toJSONString(userInfoList);
        }
    
        //使用了RestFull风格
        @GetMapping("/{id}")
        @ResponseBody
        public String query(@PathVariable(value = "id")Integer id){
            UserInfo userInfo = userInfoService.queryById(id);
            List userInfoList = new ArrayList<>();
            userInfoList.add(userInfo);
            return JSON.toJSONString(userInfoList);
        }
    
        //post请求
        //@RequestBody 表示接收请求是JSON格式的数据
        @PostMapping
        @ResponseBody
        public String add(@RequestBody UserInfo userInfo){
            userInfoService.add(userInfo);
            return "添加OK";
        }
    
        //Delete请求
        @DeleteMapping(value = "/{id}")
        @ResponseBody
        public String delete(@PathVariable("id")Integer id){
            userInfoService.delete(id);
            return "删除成功";
        }
    
        //Put请求
        @PutMapping("/{id}")
        @ResponseBody
        public String update(@PathVariable("id")Integer id,
                @RequestBody UserInfo userInfo){
            userInfo.setId(id);
            userInfoService.update(userInfo);
            return "修改成功";
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59

    第五步测试请求

    本人测试使用的工具是Postman
    Postman下载路径:https://app.getpostman.com/app/download/win64

    查询测试

    在这里插入图片描述

    在这里插入图片描述

    查询没问题

    增加数据测试

    在这里插入图片描述

    此时数据库数据也多了一条数据

    在这里插入图片描述

    修改测试

    在这里插入图片描述

    此时数据库的数据也发生了改变

    在这里插入图片描述

    删除测试

    在这里插入图片描述

    此时数据就被删除了

    在这里插入图片描述

    源码路径:https://gitee.com/mehao123/meTest

    先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前。因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦

  • 相关阅读:
    线程池七大参数的含义
    vm2 组件存在沙箱逃逸漏洞
    DirectX 12 学习笔记 -结构
    k8s安装,linux-ubuntu上面kubernetes详细安装过程
    增强常见问题解答搜索引擎:在 Elasticsearch 中利用 KNN 的力量
    SpringBoot(三)缓存
    视觉设计规范
    Chapter4:Traing Model
    学习day59
    【考研】时间复杂度与空间复杂度习题练习(含真题)
  • 原文地址:https://blog.csdn.net/m0_67401055/article/details/126081239