【JaveEE】—— 修改若依框架代码生成模板(使其支持Lombok、Swagger、Mybatis-Plus)

目录

一、Lombok集成

1、导入依赖

2、修改模板

二、Mybatis-Plus集成

1、导入依赖

2、修改配置文件

3、新增核心配置类

4、修改模板

三、字段自动填充

1、添加注解

2、新增MyMetaObjectHandler类

3、修改模板

四、Swagger集成

1、修改controller.java.vm文件

2、修改domain.java.vm文件

五、添加LocalDateTime类型

1、修改前端

2、修改后端

3、修改模板文件


若依框架默认生成的代码是不支持Lombok、Mybatis-Plus、Swagger的,那么如何根据需求修改代码生成模板,达到我们想要的效果?

我们最终想要改造之后的效果内容,如下:

  • 支持Lombok

  • 支持mybatis-plus

  • 支持自动添加Swagger的注解

  • 支持LocalDateTime

在若依框架中,生成代码的模块是generator模块,vm后缀的文件就是生成主要代码的模板文件。

一、Lombok集成

1、导入依赖

引入lombok的依赖

<dependencies>   
    <!--lombok-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.22</version>
        </dependency>
</dependencies>   

2、修改模板

修改的模板为 domain.java.vm,新增代码:

.....
import lombok.Data;  ## 导入lombok的依赖
import lombok.AllArgsConstructor;
import lombok.NoArgsConstructor;

.....
@Data  ## 添加lombok的注解
@NoArgsConstructor
@AllArgsConstructor

.....

将模板中默认的生成get/set和toString方法删掉就可以了

最终代码大致如下:自己修改一下包名

package ${packageName}.domain;

#foreach ($import in $importList)
import ${import};
#end
import lombok.Data;
import lombok.AllArgsConstructor;
import lombok.NoArgsConstructor;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.xxx.common.annotation.Excel;
#if($table.crud || $table.sub)
import com.xxx.common.core.domain.BaseEntity;
#elseif($table.tree)
import com.xxx.common.core.domain.TreeEntity;
#end

/**
 * ${functionName}对象 ${tableName}
 *
 * @author ${author}
 * @date ${datetime}
 */
#if($table.crud || $table.sub)
#set($Entity="BaseEntity")
#elseif($table.tree)
#set($Entity="TreeEntity")
#end
@Data
@NoArgsConstructor
@AllArgsConstructor
public class ${ClassName} extends ${Entity}
{
    private static final long serialVersionUID = 1L;

#foreach ($column in $columns)
    #if(!$table.isSuperColumn($column.javaField))
    /** $column.columnComment */
#if($column.list)
    #set($parentheseIndex=$column.columnComment.indexOf("("))
    #if($parentheseIndex != -1)
        #set($comment=$column.columnComment.substring(0, $parentheseIndex))
    #else
        #set($comment=$column.columnComment)
    #end
    #if($parentheseIndex != -1)
    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
    #elseif($column.javaType == 'Date')
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "${comment}", width = 30, dateFormat = "yyyy-MM-dd")
    #else
    @Excel(name = "${comment}")
    #end
#end
    private $column.javaType $column.javaField;

    #end
    #end
    #if($table.sub)
        /** $table.subTable.functionName信息 */
        private List<${subClassName}> ${subclassName}List;

    #end
}

二、Mybatis-Plus集成

1、导入依赖

<dependencies>  
     <!--MyBatisPlus-->
       <dependency>
           <groupId>com.baomidou</groupId>
           <artifactId>mybatis-plus-boot-starter</artifactId>
           <version>3.5.2</version>
       </dependency>
       <dependency>
           <groupId>com.baomidou</groupId>
           <artifactId>mybatis-plus-annotation</artifactId>
           <version>3.5.2</version>
        </dependency>
</dependencies>

2、修改配置文件

appliation.yml文件中新增MyBatisPlus配置,同时删除Mybatis相关的配置

# MyBatisPlus配置
mybatis-plus:
  # 搜索指定包别名
  typeAliasesPackage: com.zzyl.**.domain
  # 配置mapper的扫描,找到所有的mapper.xml映射文件
  mapperLocations: classpath*:mapper/**/*Mapper.xml
  # 全局配置
  global-config:
    db-config:
      id-type: auto   #id生成策略为自增
  configuration:
    map-underscore-to-camel-case: true    #字段与属性,自动转换为驼峰命名

3、新增核心配置类

新建MybatisPlusConfig配置类,删除MyBatisConfig

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.BlockAttackInnerInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.transaction.annotation.EnableTransactionManagement;

/**
 * Mybatis Plus 配置
 *
 * @author ruoyi
 */
@EnableTransactionManagement(proxyTargetClass = true)
@Configuration
public class MybatisPlusConfig {

    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        // 分页插件
        interceptor.addInnerInterceptor(paginationInnerInterceptor());
        // 乐观锁插件
        interceptor.addInnerInterceptor(optimisticLockerInnerInterceptor());
        // 阻断插件
        interceptor.addInnerInterceptor(blockAttackInnerInterceptor());
        return interceptor;
    }

    /**
     * 分页插件,自动识别数据库类型 https://baomidou.com/guide/interceptor-pagination.html
     */
    public PaginationInnerInterceptor paginationInnerInterceptor() {
        PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor();
        // 设置数据库类型为mysql
        paginationInnerIntercept
1. Tomcat 目录结构: Tomcat 的目录结构主要包括以下几个部分: - bin:存放启动和关闭 Tomcat 的脚本文件; - conf:存放 Tomcat 的配置文件,如 server.xml、web.xml 等; - lib:存放 Tomcat 运行所需的 jar 包; - logs:存放 Tomcat 运行时的日志文件; - temp:存放 Tomcat 运行时生成的临时文件; - webapps:存放 Web 应用程序的根目录,每个 Web 应用程序都是一个文件夹,其中包含了该应用程序的所有资源文件; - work:存放 Tomcat 运行时生成的工作文件。 Tomcat 支持JavaEE 规范包括 Servlet、JSP、WebSocket 等。 2. 常见的软件架构及其优缺点: (1)单层架构 单层架构是一种最简单的架构,将所有的应用程序都部署在同一台服务器上,客户端通过网络直接访问应用程序。这种架构的优点是部署简单,易于管理,但是没有良好的可扩展性和可维护性,且存在单点故障的风险。 (2)客户端/服务器架构 客户端/服务器架构将应用程序分为客户端和服务器端两个部分,客户端通过网络向服务器请求数据,服务器端将数据处理后再返回给客户端。这种架构的优点是可以减轻服务器的负担,提高系统的性能,但需要在客户端和服务器之间建立连接,而且客户端需要安装相应的软件。 (3)分层架构 分层架构将应用程序分为多层,每一层都有不同的职责,可以独立地进行开发和维护。这种架构的优点是解耦合,易于扩展和维护,但需要考虑不同层之间的通信和协作。 (4)微服务架构 微服务架构将应用程序拆分为多个小型的服务,每个服务都可以独立地进行开发、部署和扩展。这种架构的优点是高度可扩展,易于维护和部署,但需要考虑服务之间的通信和协作,且需要付出更多的开发和运维成本。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

四月天行健

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值