代码生成器生成所有微服务基本CRUD代码(renren-generator)

本文涉及的产品
云原生网关 MSE Higress,422元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
注册配置 MSE Nacos/ZooKeeper,118元/月
简介: 代码生成器生成所有微服务基本CRUD代码(renren-generator)

代码生成器注意点


controller模板


自动生成的controller包中代码带有安全框架shiro,这个我们不需要所以直接注释掉

修改自动生成的模板,注释掉全部的

  • 注解:@RequiresPermissions
  • 包:import org.apache.shiro.authz.annotation.RequiresPermissions;

image.png


自定义类的返回路径


因为我们把一些通用返回类异常等都放到了mall-common模块,所以mall-common包的定义要根据代码生成器这个包的路径来写;

比如:同一返回类我们要在写在主路径.common.utils包下;

不然全部的controller都会报包的位置错误!

mainpath就是代码生成器模块配置文件指定的

image.png

1、git clone克隆到桌面

image.png

2、修改配置

这里拿product模块做示范

mainPath=com.caq
#\u5305\u540D
package=com.caq.mall
moduleName=product
#\u4F5C\u8005
author=xiaocai
#Email
email=mildcaq@gmail.com
#\u8868\u524D\u7F00(\u7C7B\u540D\u4E0D\u4F1A\u5305\u542B\u8868\u524D\u7F00)
tablePrefix=pms_
application.yml
yaml
复制代码
spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    #MySQL配置
    driverClassName: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://192.168.1.12:3306/mall_pms?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
    username: root
    password: root

3、运行模块

访问:http://localhost:80/

image.png

4、新建common模块

因为自动生成的代码,需要有同一返回类、统一异常处理....

这些代码都在renren-fast模块,我们直接拷贝到mall-common模块即可

各模块所需代码如下:

image.png

依赖如下:

父pom中引入新家的common模块
<modules>
    <module>mall-product</module>
    <module>mall-coupon</module>
    <module>mall-member</module>
    <module>mall-order</module>
    <module>mall-ware</module>
    <module>renren-fast</module>
    <module>renren-generator</module>
    <module>mall-common</module>
</modules>
common引入如下依赖
<dependencies>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.22</version>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.4.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpcore</artifactId>
            <version>4.4.13</version>
        </dependency>
        <dependency>
            <groupId>commons-lang</groupId>
            <artifactId>commons-lang</artifactId>
            <version>2.6</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>2.5</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.17</version>
        </dependency>
    </dependencies>

5、拷贝代码注意点

打开模块所在文件夹进行拷贝

image.png


product模块


1、引入common模块

生成的代码都要引入common模块,因为自定义的一些类都指定在了mall-common模块

2、配置文件

application.yml

spring:
  datasource:
    username: root
    password: root
    url: jdbc:mysql://192.168.1.12:3306/mall_pms?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
    driver-class-name: com.mysql.cj.jdbc.Driver
mybatis-plus:
  global-config:
    db-config:
      id-type: auto
  mapper-locations: classpath:/mapper/**/*.xml
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
application.properties

用来配置端口和服务名称

# 应用名称
spring.application.name=mall-product
# 应用服务 WEB 访问端口
server.port=9999

3、启动类增加mappersan注解

这里强调下:

代码自动生成器生成的代码中,Mapper文件都加了@Mapper注解,所以我们不用加@MapperScan

如果你自己写的话,MapperScan是个更好的选择

@MapperScan("com.caq.mall.product.dao")

4、测试

package com.caq.mall;
import com.caq.mall.product.entity.BrandEntity;
import com.caq.mall.product.service.BrandService;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
class MallProductApplicationTests {
    @Autowired
    private BrandService brandService;
    @Test
    void contextLoads() {
        BrandEntity brandEntity = new BrandEntity();
        brandEntity.setName("苹果");
        brandService.save(brandEntity);
    }
}
JDBC Connection [HikariProxyConnection@1371953731 wrapping com.mysql.cj.jdbc.ConnectionImpl@740dcae3] will not be managed by Spring
==>  Preparing: INSERT INTO pms_brand ( name ) VALUES ( ? )
==> Parameters: 苹果(String)
<==    Updates: 1

5、上传代码到github

上传失败可搜索我的文章,今天刚更新的

Java初学者必看,这篇文章

image.png


coupon模块


1、修改代码生成器配置文件

mainPath=com.caq
#\u5305\u540D
package=com.caq.mall
moduleName=coupon
#\u4F5C\u8005
author=xiaocai
#Email
email=mildcaq@gmail.com
#\u8868\u524D\u7F00(\u7C7B\u540D\u4E0D\u4F1A\u5305\u542B\u8868\u524D\u7F00)
tablePrefix=sms_

yml文件

server:
  port: 80
# mysql
spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    #MySQL配置
    driverClassName: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://192.168.1.12:3306/mall_sms?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
    username: root
    password: root

2、重启服务,重新生成代码文件

image.png

3、拷贝代码,建立coupon配置文件

因为我们是通过SpringInit初始化的模块,所以每个模块都有自带的配置文件applicaiton.properties

改端口的话我们可以修改applicaiton.properties文件


spring:
  datasource:
    username: root
    password: root
    url: jdbc:mysql://192.168.1.12:3306/mall_sms?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
    driver-class-name: com.mysql.cj.jdbc.Driver
mybatis-plus:
  mapper-locations: classpath:/mapper/**/*.xml
  global-config:
    db-config:
      id-type: auto

4、运行,测试

http://localhost:7000/coupon/coupon/list

{"msg":"success","code":0,"page":{"totalCount":0,"pageSize":10,"totalPage":0,"currPage":1,"list":[]}}


member模块


重复上述操作,改代码生成器配置文件,运行生成代码,拷贝代码到模块

拷贝后的代码,建立配置文件,改端口,运行

测试,没问题即可

image.png


order模块


重复上述操作,改代码生成器配置文件(模块名,数据库名),运行生成代码,拷贝代码到模块

重复上述操作,拷贝后的代码,建立配置文件,改端口,运行


ware模块


重复上述操作,改代码生成器配置文件(模块名,数据库名),运行生成代码,拷贝代码到模块

重复上述操作,拷贝后的代码,建立配置文件,改端口,运行



相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
8月前
|
Java Nacos
在MSE微服务引擎中,可以使用Java代码进行Nacos下线操作
在MSE微服务引擎中,可以使用Java代码进行Nacos下线操作
145 3
|
29天前
|
数据管理 测试技术 持续交付
构建高效微服务架构:策略与实践代码之美:简洁性与可读性的平衡艺术
【5月更文挑战第27天】在现代软件开发中,微服务架构已成为构建可扩展、灵活且容错的系统的首选方法。本文将探讨构建高效微服务架构的关键策略,包括服务划分、通信机制、数据管理以及持续集成与部署。通过实际案例分析,我们将讨论如何在实践中应用这些策略,以提高系统的性能和可靠性。 【5月更文挑战第27天】在软件开发的世界中,编写出既简洁又具有高可读性的代码是一种艺术。本文将探讨如何在保持代码简洁的同时,不牺牲其可读性和可维护性。我们将深入分析几个关键原则和实践技巧,并配以示例来阐明如何实现这种平衡。文章的目标是为开发者提供实用的指导,帮助他们在编码时做出明智的决策,以提升代码质量。
|
1月前
|
存储 Java API
入职之后发现代码居然是祖传代码肿么办?(SSH->微服务)
入职之后发现代码居然是祖传代码肿么办?(SSH->微服务)
|
8月前
|
SQL 程序员 Go
Go语言微服务框架 - 7.Gormer-自动生成代码的初体验
作为一名程序员,我们总是希望能有更简单的开发方式来解决重复性的工作问题。在这个小版本中,我将结合自己的工作,来给出一套自动生成代码的完整方案,供大家借鉴。
45 0
|
1月前
|
负载均衡 监控 算法
【微服务】1、一篇文章了解 Eureka 注册中心(理论加代码)
【微服务】1、一篇文章了解 Eureka 注册中心(理论加代码)
30 0
|
Java Nacos 数据库
从0到1 手把手搭建spring cloud alibaba 微服务大型应用框架(五) SEATA分布式事务篇(下)应用整合shardingsphere集成seata完整代码及订单-库存完整模拟案例
从0到1 手把手搭建spring cloud alibaba 微服务大型应用框架(五) SEATA分布式事务篇(下)应用整合shardingsphere集成seata完整代码及订单-库存完整模拟案例
从0到1 手把手搭建spring cloud alibaba 微服务大型应用框架(五) SEATA分布式事务篇(下)应用整合shardingsphere集成seata完整代码及订单-库存完整模拟案例
|
7月前
|
安全 Java 测试技术
微服务技术系列教程(06) - SpringBoot - lombok简洁代码
微服务技术系列教程(06) - SpringBoot - lombok简洁代码
43 0
|
Arthas 存储 运维
60-微服务技术栈(高级):在线检测工具Arthas(实现CPU排查与代码热更新)
线上代码经常会出现CPU占用过高的情况,按以往经验我会使用top指令,进一步借助于jstack去查看具体信息从而进行问题排查,但基本上都逃不过需要重新发包的局面,即使是一个增量包,应用也需要短暂停启。后来运维大兄弟让我试一下Arthas,说是可以进行代码的热更新操作,正好来试一下。
320 0
|
搜索推荐 前端开发 Java
从0到1 手把手搭建spring cloud alibaba 微服务大型应用框架(八)saas平台篇-解决不同租户针定制化开发问题(2) -挂载自定义登陆以及业务端完整代码
从0到1 手把手搭建spring cloud alibaba 微服务大型应用框架(八)saas平台篇-解决不同租户针定制化开发问题(2) -挂载自定义登陆以及业务端完整代码
从0到1 手把手搭建spring cloud alibaba 微服务大型应用框架(八)saas平台篇-解决不同租户针定制化开发问题(2) -挂载自定义登陆以及业务端完整代码
|
Java 微服务 Spring
从0到1 手把手搭建spring cloud alibaba 微服务大型应用框架(八) saas平台篇-解决不同租户针定制化开发问题 -完整代码以及案例方案(1)
从0到1 手把手搭建spring cloud alibaba 微服务大型应用框架(八) saas平台篇-解决不同租户针定制化开发问题 -完整代码以及案例方案(1)
从0到1 手把手搭建spring cloud alibaba 微服务大型应用框架(八) saas平台篇-解决不同租户针定制化开发问题 -完整代码以及案例方案(1)

热门文章

最新文章