【前后端的那些事】解放后端!10min快速上手人人代码生成器(后端篇)

人人代码生成器【后端篇】

文章目录

    • 人人代码生成器【后端篇】
      • 1. 克隆renren-generator
      • 2. 配置项目信息
      • 3. 配置数据库信息
      • 4. 启动项目
      • 5. 创建springboot项目
        • 5.1 pom.xml
        • 5.2 创建包结构
        • 5.3 编写application.yml
        • 5.4 将生成代码集成到项目中
        • 5.5 集成common模块
        • 5.6 启动项目

前言:最近写项目,发现了一些很有意思的功能,想写文章,录视频把这些内容记录下。但这些功能太零碎,如果为每个功能都单独搭建一个项目,这明显不合适。于是我想,就搭建一个项目,把那些我想将的小功能全部整合到一起。实现 搭一次环境,处处使用。

本文主要实现以下功能

  1. 集成人人代码生成器【后端】

已录制视频
视频链接

仓库地址
https://github.com/xuhuafeifei/fgbg-font-and-back.git

1. 克隆renren-generator

git clone https://gitee.com/renrenio/renren-generator.git

2. 配置项目信息

点击/resource/generator.properties

【前后端的那些事】解放后端!10min快速上手人人代码生成器(后端篇)_第1张图片

将下述信息按照自己的需求进行配置

本文涉及到的项目,mainPath等参数填写如下

【前后端的那些事】解放后端!10min快速上手人人代码生成器(后端篇)_第2张图片

不知道mainPath等参数什么意思的,可以看看template目录下,Controller.java.vm这个模板类中的代码

【前后端的那些事】解放后端!10min快速上手人人代码生成器(后端篇)_第3张图片

tip:

  • package:包名
  • moduleName: 模块名
  • mainPath:主路径

我们当前设置下,目录结构如下

- com
	- fgbg
		- test 【模块名】
			- controller
			- service
			- entity
			...
		- common 【通用模块】
			...后续介绍

3. 配置数据库信息

代码生成器是依据数据库信息,来生成对应的增删改查代码。因此,我们需要设置我们想要生成增删改查代码的数据库信息

点击application.yml,配置url,username,password

【前后端的那些事】解放后端!10min快速上手人人代码生成器(后端篇)_第4张图片

4. 启动项目

在浏览器中输入localhost:80,启动项目前端
【前后端的那些事】解放后端!10min快速上手人人代码生成器(后端篇)_第5张图片

在菜单栏中选择renren-fast,在界面中勾选需要生成对应代码的数据库表,点击生成代码即可
【前后端的那些事】解放后端!10min快速上手人人代码生成器(后端篇)_第6张图片

5. 创建springboot项目

5.1 pom.xml

我使用的是springboot2.7.5,jdk8


<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.0modelVersion>
    <parent>
        <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-starter-parentartifactId>
        <version>2.7.5version>
        <relativePath/> 
    parent>
    <groupId>com.fgbggroupId>
    <artifactId>demoartifactId>
    <version>0.0.1-SNAPSHOTversion>
    <name>demoname>
    <description>Demo project for Spring Bootdescription>
    <properties>
        <java.version>1.8java.version>
        <project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8project.reporting.outputEncoding>
        <java.version>1.8java.version>
        <mybatisplus.version>3.3.1mybatisplus.version>
        <mysql.version>8.0.28mysql.version>
        <mssql.version>4.0mssql.version>
        <oracle.version>11.2.0.3oracle.version>
        <druid.version>1.1.13druid.version>
        <quartz.version>2.3.0quartz.version>
        <commons.lang.version>2.6commons.lang.version>
        <commons.fileupload.version>1.2.2commons.fileupload.version>
        <commons.io.version>2.5commons.io.version>
        <commons.codec.version>1.10commons.codec.version>
        <commons.configuration.version>1.10commons.configuration.version>
        <shiro.version>1.9.0shiro.version>
        <jwt.version>0.7.0jwt.version>
        <kaptcha.version>0.0.9kaptcha.version>
        <qiniu.version>7.2.23qiniu.version>
        <aliyun.oss.version>2.8.3aliyun.oss.version>
        <qcloud.cos.version>4.4qcloud.cos.version>
        <swagger.version>2.7.0swagger.version>
        <joda.time.version>2.9.9joda.time.version>
        <gson.version>2.8.5gson.version>
        <hutool.version>4.1.1hutool.version>
        <lombok.version>1.18.4lombok.version>
    properties>


    <dependencies>
        <dependency>
            <groupId>com.fasterxml.jackson.datatypegroupId>
            <artifactId>jackson-datatype-jsr310artifactId>
        dependency>

        
        <dependency>
            <groupId>ch.qos.logbackgroupId>
            <artifactId>logback-classicartifactId>
        dependency>
        <dependency>
            <groupId>ch.qos.logbackgroupId>
            <artifactId>logback-accessartifactId>
        dependency>
        <dependency>
            <groupId>ch.qos.logbackgroupId>
            <artifactId>logback-coreartifactId>
        dependency>
        <dependency>
            <groupId>commons-dbcpgroupId>
            <artifactId>commons-dbcpartifactId>
            <version>1.4version>
        dependency>

        <dependency>
            <groupId>com.auth0groupId>
            <artifactId>java-jwtartifactId>
            <version>3.2.0version>
        dependency>

        <dependency>
            <groupId>com.aliyungroupId>
            <artifactId>dysmsapi20170525artifactId>
            <version>2.0.23version>
        dependency>

        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-validationartifactId>
        dependency>
        <dependency>
            <groupId>commons-iogroupId>
            <artifactId>commons-ioartifactId>
            <version>2.11.0version>
        dependency>
        <dependency>
            <groupId>javax.annotationgroupId>
            <artifactId>javax.annotation-apiartifactId>
        dependency>
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-jdbcartifactId>
        dependency>
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-thymeleafartifactId>
        dependency>
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-webartifactId>
        dependency>
        <dependency>
            <groupId>com.baomidougroupId>
            <artifactId>mybatis-plus-boot-starterartifactId>
            <version>${mybatisplus.version}version>
            <exclusions>
                <exclusion>
                    <groupId>com.baomidougroupId>
                    <artifactId>mybatis-plus-generatorartifactId>
                exclusion>
            exclusions>
        dependency>
        <dependency>
            <groupId>org.apache.shirogroupId>
            <artifactId>shiro-coreartifactId>
            <version>${shiro.version}version>
        dependency>
        <dependency>
            <groupId>org.apache.shirogroupId>
            <artifactId>shiro-springartifactId>
            <version>${shiro.version}version>
        dependency>
        <dependency>
            <groupId>io.jsonwebtokengroupId>
            <artifactId>jjwtartifactId>
            <version>${jwt.version}version>
        dependency>
        <dependency>
            <groupId>com.github.axetgroupId>
            <artifactId>kaptchaartifactId>
            <version>${kaptcha.version}version>
        dependency>
        <dependency>
            <groupId>io.springfoxgroupId>
            <artifactId>springfox-swagger2artifactId>
            <version>${swagger.version}version>
        dependency>
        <dependency>
            <groupId>io.springfoxgroupId>
            <artifactId>springfox-swagger-uiartifactId>
            <version>${swagger.version}version>
        dependency>
        <dependency>
            <groupId>com.qiniugroupId>
            <artifactId>qiniu-java-sdkartifactId>
            <version>${qiniu.version}version>
        dependency>
        <dependency>
            <groupId>com.aliyun.ossgroupId>
            <artifactId>aliyun-sdk-ossartifactId>
            <version>${aliyun.oss.version}version>
        dependency>
        <dependency>
            <groupId>com.qcloudgroupId>
            <artifactId>cos_apiartifactId>
            <version>${qcloud.cos.version}version>
            <exclusions>
                <exclusion>
                    <groupId>org.slf4jgroupId>
                    <artifactId>slf4j-log4j12artifactId>
                exclusion>
            exclusions>
        dependency>
        <dependency>
            <groupId>joda-timegroupId>
            <artifactId>joda-timeartifactId>
            <version>${joda.time.version}version>
        dependency>
        <dependency>
            <groupId>com.alibabagroupId>
            <artifactId>fastjsonartifactId>
            <version>1.2.79version>
        dependency>
        <dependency>
            <groupId>com.google.code.gsongroupId>
            <artifactId>gsonartifactId>
            <version>${gson.version}version>
        dependency>
        <dependency>
            <groupId>cn.hutoolgroupId>
            <artifactId>hutool-allartifactId>
            <version>${hutool.version}version>
        dependency>
        <dependency>
            <groupId>org.projectlombokgroupId>
            <artifactId>lombokartifactId>
            <version>${lombok.version}version>
        dependency>
        <dependency>
            <groupId>mysqlgroupId>
            <artifactId>mysql-connector-javaartifactId>
        dependency>
        <dependency>
            <groupId>commons-langgroupId>
            <artifactId>commons-langartifactId>
            <version>${commons.lang.version}version>
        dependency>
        <dependency>
            <groupId>org.aspectjgroupId>
            <artifactId>aspectjweaverartifactId>
        dependency>
        
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-data-redisartifactId>
            <version>2.7.5version>
        dependency>
        
        <dependency>
            <groupId>org.springframework.datagroupId>
            <artifactId>spring-data-redisartifactId>
            <version>2.7.5version>
        dependency>

        <dependency>
            <groupId>javax.servletgroupId>
            <artifactId>javax.servlet-apiartifactId>
            <version>3.1.0version>
        dependency>
        <dependency>
            <groupId>com.alibabagroupId>
            <artifactId>druid-spring-boot-starterartifactId>
            <version>1.2.13version>
        dependency>
        <dependency>
            <groupId>org.projectlombokgroupId>
            <artifactId>lombokartifactId>
            <optional>trueoptional>
        dependency>
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-testartifactId>
            <scope>testscope>
        dependency>
        <dependency>
            <groupId>io.miniogroupId>
            <artifactId>minioartifactId>
            <version>8.2.2version>
        dependency>
        <dependency>
            <groupId>org.apache.commonsgroupId>
            <artifactId>commons-lang3artifactId>
        dependency>
    dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.bootgroupId>
                <artifactId>spring-boot-maven-pluginartifactId>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombokgroupId>
                            <artifactId>lombokartifactId>
                        exclude>
                    excludes>
                configuration>
            plugin>
        plugins>
    build>
project>

5.2 创建包结构

因为我们的mainPath是com.fgbg【详见第2部分】,所以创建的时候包结构创建2层即可

具体如下
【前后端的那些事】解放后端!10min快速上手人人代码生成器(后端篇)_第7张图片

TestApplication.java 启动类

package com.fgbg;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class TestApplication {
    public static void main(String[] args) {
        SpringApplication.run(TestApplication.class, args);
    }
}
5.3 编写application.yml

application.yml 启动环境为dev

# Tomcat
server:
  tomcat:
    uri-encoding: UTF-8
    max-threads: 1000
    min-spare-threads: 30
  port: 9006
  connection-timeout: 5000ms
#  servlet:
#    context-path: /api_zbt # 在后端所有的请求路径前添加/api_zbt

spring:
  # 环境 dev|test|prod
  profiles:
    active: dev # 启动dev环境
  # jackson时间格式化
  jackson:
    time-zone: GMT+8
    date-format: yyyy-MM-dd HH:mm:ss
  servlet:
    multipart:
      max-file-size: 100MB
      max-request-size: 100MB
      enabled: true
  redis:
    open: false  # 是否开启redis缓存  true开启   false关闭
    database: 0
    host: localhost
    port: 6379
    #    password: 123456   # 密码(默认为空)
    timeout: 6000ms  # 连接超时时长(毫秒)
    jedis:
      pool:
        max-active: 1000  # 连接池最大连接数(使用负值表示没有限制)
        max-wait: -1ms      # 连接池最大阻塞等待时间(使用负值表示没有限制)
        max-idle: 10      # 连接池中的最大空闲连接
        min-idle: 5       # 连接池中的最小空闲连接
  mvc:
    throw-exception-if-no-handler-found: true
    pathmatch:
      matching-strategy: ANT_PATH_MATCHER
#  resources:
#    add-mappings: false


#mybatis
mybatis-plus:
  logging:
    level:
      #      org.springframework: warn
      org.apache.ibatis.logging: debug
  #      com.tmxk.municipal.**.dao: debug
  mapper-locations: classpath*:/mapper/**/*.xml
  #实体扫描,多个package用逗号或者分号分隔
  typeAliasesPackage: io.renren.modules.*.entity
  global-config:
    #数据库相关配置
    db-config:
      #主键类型  AUTO:"数据库ID自增", INPUT:"用户输入ID", ID_WORKER:"全局唯一ID (数字类型唯一ID)", UUID:"全局唯一ID UUID";
      #      id-type: ASSIGN_ID
      id-type: AUTO
      logic-delete-value: 0
      logic-not-delete-value: 1
    banner: false
  #原生配置
  configuration:
    map-underscore-to-camel-case: true
    cache-enabled: false
    call-setters-on-nulls: true
    jdbc-type-for-null: 'null'
    log-impl: org.apache.ibatis.logging.slf4j.Slf4jImpl


renren:
  redis:
    open: false
  shiro:
    redis: false
  # APP模块,是通过jwt认证的,如果要使用APP模块,则需要修改【加密秘钥】
  jwt:
    # 加密秘钥
    secret: f4e2e52034348f86b67cde581c0f9eb5[www.renren.io]
    # token有效时长,7天,单位秒
    expire: 604800
    header: token

application-dev.yml

spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    druid:
      driver-class-name: com.mysql.cj.jdbc.Driver
      url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
      username: root
      password: root
      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
      #Oracle需要打开注释
      #validation-query: SELECT 1 FROM DUAL
      test-while-idle: true
      test-on-borrow: false
      test-on-return: false
      stat-view-servlet:
        enabled: true
        url-pattern: /druid/*
        #login-username: admin
        #login-password: admin
      filter:
        stat:
          log-slow-sql: true
          slow-sql-millis: 1000
          merge-sql: false
        wall:
          config:
            multi-statement-allow: true
5.4 将生成代码集成到项目中

解压缩文件,将文件中的main文件夹全部cv覆盖项目中的main文件夹

【前后端的那些事】解放后端!10min快速上手人人代码生成器(后端篇)_第8张图片

覆盖springboot项目的main模块
【前后端的那些事】解放后端!10min快速上手人人代码生成器(后端篇)_第9张图片

完美集成!

【前后端的那些事】解放后端!10min快速上手人人代码生成器(后端篇)_第10张图片

但点击CouresController,会发现有报错

这是因为项目中缺少common模块导致的

【前后端的那些事】解放后端!10min快速上手人人代码生成器(后端篇)_第11张图片

5.5 集成common模块

common模块的官方做法是,从renren-fast后端项目中cv过来。但官方的代码cv过来会出现包模块错误的问题,而且功能冗余,兼容性不太好。所以使用我自己整理好的common模块,具体获取方式为关注微信公众号 一只学Java的飞鸽呀,回复common,即可获取common代码

现在,我们将common集成到项目中

【前后端的那些事】解放后端!10min快速上手人人代码生成器(后端篇)_第12张图片

重点:ctrl+shift+r,用idea自带的全局替换功能,将com.zbg.common替换成我们自己项目中,common模块的路径com.fgbg.common

【前后端的那些事】解放后端!10min快速上手人人代码生成器(后端篇)_第13张图片

现在Controller不报错了,几乎都没咋改动代码,完美集成
【前后端的那些事】解放后端!10min快速上手人人代码生成器(后端篇)_第14张图片

5.6 启动项目

【前后端的那些事】解放后端!10min快速上手人人代码生成器(后端篇)_第15张图片

测试查询接口

成功!
【前后端的那些事】解放后端!10min快速上手人人代码生成器(后端篇)_第16张图片

你可能感兴趣的:(人人代码生成器)