mybatis plus generator 3.5.1 从了解到自定义定制VO、PO、DTO

Mybatis-plus最新代码生成器(3.5.1+)的使用 1.引入依赖: <!--mybatisPlus--> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.4.3.4</version> </dependency> <!--mybatis-plus代码生成器-- 阅读详情

一、背景说明:

在项目研发过程中,通过自动化工具生成ORM对象关系映射是一件必不可少的工作。

mybatis plus generator 是一个很好用的工具,在新搭建的项目中研发兄弟尝新,使用了 generator 的3.5.1 和3.5.2 版本,在生成自带的基础工具类的基础上,想再同时生成相应的 PO、VO、DTO和转换工具等实体,发现3.5.1以上关于自定义定制类资料较少,因故写此文章,记录研学结果。希望对大家有用

二、mybatis plus generator jar 包引入

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus</artifactId>
    <version>3.5.1</version>
</dependency>
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-generator</artifactId>
    <version>3.5.1</version>
</dependency>

三、开发环境简单介绍

mac 、jdk 1.8 、idea 、mysql 、使用 Velocity 模板自定义生成工具类(默认)

四、基础配置使用说明

1、基础路径信息配置


/**数据库链接地址**/
private static final String JDBC_URL_MAN = "jdbc:mysql://127.0.0.1:3306/myDatabase?useUnicode=true&characterEncoding=UTF-8";
/**数据库登录账号**/
private static final String JDBC_UserName = "root";
/**数据库登录密码**/
private static final String JDBC_Password = "root1234";
/**
 * 【需要修改】
 * 需要进行生成文件的表名
 *          多张表,表名间使用,号分割
 **/
private static final String[] Tables = { "user_table"};

/**
 * 【需要修改】
 * 生成类的注释
 * 作者名称
 */
private static final String CODE_AUTHOR = "timerbin";

/**
 * 生成的文件存放地址 之
 *      文件路径
 */
private static final String FILE_STORAGE_FILE_ROOT_PATH = System.getProperty("user.dir")+"/user-obj/user-obj-dao/src/test/java/";
/**
 *  生成的文件存放地址 之
 *      父级 jar包路径
 */
private static final String FILE_STORAGE_FILE_JAR_PACKAGE = "com.jd.timer.bin.user.dao";
/**
 *
 *  生成的文件存放地址 之
 *      模块 jar包名称
 */
private static final String FILE_STORAGE_FILE_JAR_PACKAGE_MODULE = "build";
/**
 *  生成的文件存放地址 之
 *      Service 接口 存放地址
 */
private static final String FILE_STORAGE_SERVICE_FILE_JAR_PACKAGE= "service";
/**
 *  生成的文件存放地址 之
 *      Service impl 实现类 存放地址
 */
private static final String FILE_STORAGE_SERVICE_IMPL_FILE_JAR_PACKAGE= "impl";

/**
 *  生成的文件存放地址 之
 *      entity  实体类 存放地址
 */
private static final String FILE_STORAGE_ENTITY_FILE_JAR_PACKAGE= "entity";

/**
 *  生成的文件存放地址 之
 *      mapper  操作类 存放地址
 */
private static final String FILE_STORAGE_MAPPER_FILE_JAR_PACKAGE= "mapper";


/**
 *  生成的文件存放地址 之
 *      mapper  xml 文件 存放地址
 */
private static final String FILE_STORAGE_MAPPER_XML_FILE_JAR_PACKAGE= "mapper";


/**
 *  自定义 、定制 生成的文件存放地址 之
 *      other 其他文件 存放地址
 */
private static final String FILE_STORAGE_OTHER_FILE_JAR_PACKAGE= "other";

以上配置主要目的是指定数据库、表,以及生成的基础文件存放路径,此处无需多关注,且朝下看

2、自动生成工具 main 方法

public static void main(String[] args) {

    //设置数据库信息
    /***
     * 数据库信息配置
     */
    DataSourceConfig dataSourceConfig = configDataSource();
    /**
     * 生成工具类
     **/
    AutoGenerator generator = new AutoGenerator(dataSourceConfig);
    /**
     * 全局变量配置
     */
    generator.global(configGlobel());
    /**
     * 设置生成文件包名地址
     */
    generator.packageInfo(configPackage());

    /**
     * 生成文件的策略配置
     */
    generator.strategy(configStratgy());

    /**
     * 生成的类的模板配置
     */
    generator.template(configTemplate());

    /**
     * 自定义实体信息
     **/
    generator.injection(initInjectionConfig());

    /**
     * 自定义模板解析器
     */
    YaoVelocityTemplateEngine yaoVelocityTemplateEngine = new YaoVelocityTemplateEngine();

    generator.execute(yaoVelocityTemplateEngine);

}

相关jar 包引用

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.IFill;
import com.baomidou.mybatisplus.generator.config.*;
import com.baomidou.mybatisplus.generator.config.converts.MySqlTypeConvert;
import com.baomidou.mybatisplus.generator.config.querys.MySqlQuery;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.DbColumnType;
import com.baomidou.mybatisplus.generator.config.rules.IColumnType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import com.baomidou.mybatisplus.generator.fill.Column;
import com.baomidou.mybatisplus.generator.keywords.MySqlKeyWordsHandler;

3、关键各个子方法

/**
 * 配置基础转换器
 * @return
 */
private static DataSourceConfig configDataSource() {
    /**数据库链接配置**/
    DataSourceConfig dataSourceConfig = new DataSourceConfig.Builder(
            JDBC_URL_MAN,
            JDBC_UserName,
            JDBC_Password
    )
            .dbQuery(new MySqlQuery())
            /**自定义转换器,将tinyint 转换为Integer**/
            .typeConvert(new EasyMySqlTypeConvert())
            .keyWordsHandler(new MySqlKeyWordsHandler())
            .build();

    return dataSourceConfig;
}

/**
 * 自定义转换器转换器 内部类
 *         目的将数据库表中定义的  tinyint 或 bit类型转变为 java Integer 类型
 * @author timerbin
 */
 static class EasyMySqlTypeConvert extends MySqlTypeConvert {
    @Override
    public IColumnType processTypeConvert(GlobalConfig config, String fieldType) {
        IColumnType iColumnType = super.processTypeConvert(config, fieldType);
        if (fieldType.equals("tinyint(1)")) {
            iColumnType = DbColumnType.INTEGER;
        }
        if (fieldType.equals("bit(1)")) {
            iColumnType = DbColumnType.BYTE;
        }
        return iColumnType;
    }
}

/**
 * 设置全局变量
 * @return
 */
private static GlobalConfig configGlobel() {

    GlobalConfig globalConfig = new GlobalConfig.Builder()
            .fileOverride()
            .disableOpenDir()
            /**存放生成文件的文件夹地址**/
            .outputDir(FILE_STORAGE_FILE_ROOT_PATH)
            .author(CODE_AUTHOR)
            .dateType(DateType.ONLY_DATE)
            .commentDate("yyyy-MM-dd hh:mm:ss")
            .build();
    return globalConfig;
}

/**
 * 生成文件存储目录配置
 * @return
 */
private static PackageConfig configPackage() {
    PackageConfig packageConfig = new PackageConfig.Builder()
            /**存放生成文件的 父级 package 地址**/
            .parent(FILE_STORAGE_FILE_JAR_PACKAGE)
            /**存放生成文件的 的 父级模块地址**/
            .moduleName(FILE_STORAGE_FILE_JAR_PACKAGE_MODULE)
            /**存放生成文件的 service 接口 存放的package地址**/
            .service(FILE_STORAGE_SERVICE_FILE_JAR_PACKAGE)
            /**存放生成文件的 service 接口实现类 存放的package地址**/
            .serviceImpl(FILE_STORAGE_SERVICE_IMPL_FILE_JAR_PACKAGE)
            /**存放生成文件的 实体类 存放的package地址**/
            .entity(FILE_STORAGE_ENTITY_FILE_JAR_PACKAGE)
            /**存放生成文件的 mapper 操作类 存放的package地址**/
            .mapper(FILE_STORAGE_MAPPER_FILE_JAR_PACKAGE)
            /**存放生成文件的 mapper 操作类 xml 存放的package地址**/
            .xml(FILE_STORAGE_MAPPER_XML_FILE_JAR_PACKAGE)
            /**存放生成文件的 其他实体类 存放的package地址**/
            .other(FILE_STORAGE_OTHER_FILE_JAR_PACKAGE)
            .build();
    return packageConfig;
}

/**
 * 生成文件的策略配置
 * @return
 */
private static StrategyConfig configStratgy() {

    /**
     * 初始化配置
     *      策略中实体字段的默认填充装置
     *      
     */
    List<IFill> tableFillList = makeInitTableFills();


    StrategyConfig strategyConfig = new StrategyConfig.Builder()
            .addInclude(Tables)

            .entityBuilder()//开始定制实体
            /***禁用生成 serialVersionUID**/
            // .disableSerialVersionUID()
            .enableActiveRecord()
            .enableLombok()
            .enableRemoveIsPrefix()
            .enableTableFieldAnnotation()
            .enableChainModel()
            .naming(NamingStrategy.underline_to_camel)
            .columnNaming(NamingStrategy.underline_to_camel)
            /***逻辑删除字段名(数据库)**/
//                .logicDeleteColumnName("yn")
            .addTableFills(tableFillList)
            .idType(IdType.AUTO)
            /**格式化实体类文件名称***/
            //.formatFileName("%sEntity")

            .serviceBuilder()//开始定制Service,由于我们不需要service此处略
            /***格式化 service 接口文件名称**/
            .formatServiceFileName("%sService")
            .formatServiceImplFileName("%sServiceImpl")

            .mapperBuilder()//开始定制映射器
            .enableMapperAnnotation()
            .superClass(BaseMapper.class)
            .enableBaseColumnList()
            .enableBaseResultMap()
            .formatMapperFileName("%sMapper")
            .formatXmlFileName("%sMapper")

            .build();
    return strategyConfig;
}

/**
 * 类生成策略
 *      配置字段默认填充装置
 *
 * @return
 */
private static List<IFill> makeInitTableFills(){
    List<IFill> tableFillList = new ArrayList<>();
    /**定义创建时间 插入时默认填充**/
    Column createTableFill = new Column("created", FieldFill.INSERT);
    /** 定义修改时间 插入或修改时默认填充**/
    Column updateTableFill = new Column("modified", FieldFill.INSERT_UPDATE);
    tableFillList.add(createTableFill);
    tableFillList.add(updateTableFill);

    return tableFillList;
}

/**
 * 设置其他模板
 * @return
 */
private static TemplateConfig configTemplate() {
    TemplateConfig templateConfig = new TemplateConfig.Builder()
            .controller(null)//我不需要controller 此处传null 
            .service(null)//我不需要service  此处传null
            .serviceImpl(null)//我不需要service impl 此处传null
            .build();
    return templateConfig;
}

/**
 *
 * @return
 */
private static InjectionConfig initInjectionConfig(){
    /**自定义生成模板参数**/
    Map<String,Object> paramMap = new HashMap<>();

    /** 自定义 生成类**/
    Map<String,String> customFileMap = new HashMap<>();
    /**PO实体**/
    customFileMap.put("po"+File.separator+"%sPO.java", "/templates/PO.java.vm");
    /**Vo实体**/
    customFileMap.put("vo"+File.separator+"%sVO.java", "/templates/VO.java.vm");
    /**DTO实体**/
    customFileMap.put("dto"+File.separator+"%sDTO.java", "/templates/DTO.java.vm");

    return new InjectionConfig.Builder()
            .customMap(paramMap)
            .customFile(customFileMap)
            .build();
}

以上为配置大多数为mybatis plus generator 3.5.1 的基础配置,网上相关说明资料较多,这里不做过多赘述,以下文章写的较全,大家可以借鉴下。

详见:mybatis-plus代码生成器及配置 - BlogMemory - 博客园

五、着重说明-自定义、定制工具类

1、主要配置方法在以上代码中已列出,为 initInjectionConfig() 方法,需同步配置信息

//1、指定生成的自定文件存放路径
/**存放生成文件的 其他实体类 存放的package地址**/
new PackageConfig.Builder().other(FILE_STORAGE_OTHER_FILE_JAR_PACKAGE);

//2、自定义重新生成自定义、定制类的工具
/**
 * 自定义模板解析器
 */
TimerVelocityTemplateEngine timerVelocityTemplateEngine = new TimerVelocityTemplateEngine();

//3、定义注入配置方法
/**
 * 自定义注入配置
 * @return
 */
private static InjectionConfig initInjectionConfig(){
    /**自定义生成模板参数**/
    Map<String,Object> paramMap = new HashMap<>();

    /** 自定义 生成类**/
    Map<String,String> customFileMap = new HashMap<>();
    /**PO实体**/
    customFileMap.put("po"+File.separator+"%sPO.java", "/templates/PO.java.vm");
    /**Vo实体**/
    customFileMap.put("vo"+File.separator+"%sVO.java", "/templates/VO.java.vm");
    /**DTO实体**/
    customFileMap.put("dto"+File.separator+"%sDTO.java", "/templates/DTO.java.vm");

    return new InjectionConfig.Builder()
            .customMap(paramMap)
            .customFile(customFileMap)
            .build();
}

//4、将自定义注入配置放入到 自动工具生成器中
/**
 * 自定义实体信息
 **/
generator.injection(initInjectionConfig());
//开始执行基础类生成
generator.execute(timerVelocityTemplateEngine);

2、重点说一下 InjectionConfig 注入配置的属性

方法说明作用
beforeOutputFile(BiConsumer<TableInfo, Map<String, Object>>)输出文件之前消费者
customMap(Map<String, Object>)

自定义配置 Map 对象

key:传入参数的名称

value : 传入参数的对象

向自定义模板中传入参数和值
customFile(Map<String, String>)

自定义配置模板文件Map

key:用于定义生成自定义、定制类的名称

value:用于指定自定义、定制类的模板地址,默认为Velocity模板

自定义模板名称和模板

3、详细说明一下 重写的 YaoVelocityTemplateEngine 类

重写后代码:

import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.config.po.TableInfo;
import com.baomidou.mybatisplus.generator.engine.VelocityTemplateEngine;
import com.jd.jsf.gd.util.JsonUtils;

public class TimerVelocityTemplateEngine  extends VelocityTemplateEngine {

    @Override
    protected void outputCustomFile( Map<String, String> customFile, TableInfo tableInfo,Map<String, Object> objectMap) {
        //数据库表映射实体名称 
        String entityName = tableInfo.getEntityName();
        
        String otherPath = this.getPathInfo(OutputFile.other);
        //System.out.println(JsonUtils.toJSONString(tableInfo));
        
        //数据库表映射实体名称 驼峰命名法
        objectMap.put("humpEentityName",toLowerCaseFirstOne(entityName));
        
        customFile.forEach((key, value) -> {

            String fileName = String.format(otherPath + File.separator +key,entityName);
            this.outputFile(new File(fileName), objectMap, value);
        });
    }

    /**
     * 首字母转为小写
     * @param s
     * @return
     */
    private  String toLowerCaseFirstOne(String s){
        if(Character.isLowerCase(s.charAt(0))) {
            return s;
        }else {
            return (new StringBuilder()).append(Character.toLowerCase(s.charAt(0))).append(s.substring(1)).toString();
        }
    }
}

重写前源码:

//AbstractTemplateEngine
protected void outputCustomFile(@NotNull Map<String, String> customFile, @NotNull TableInfo tableInfo, @NotNull Map<String, Object> objectMap) {
    String entityName = tableInfo.getEntityName();
    String otherPath = this.getPathInfo(OutputFile.other);
    customFile.forEach((key, value) -> {
        String fileName = String.format(otherPath + File.separator + entityName + File.separator + "%s", key);
        this.outputFile(new File(fileName), objectMap, value);
    });
}

重写原因:

1)在 Velocity 模板中未找到相关的属性,能获取到数据库表映射实体名称的驼峰命名法,重写此方法获得驼峰实体类命名,便于使用

2、生成多个自定义、定制类时没办法随意指定文件路径,一但存在多个类似名称时,非常不便于查找

3、使用源码方式实在是没有想到如何在自定义、定制生成的类名上加上数据库表映射实体名称

通过以上的种种操作就可以实现自定义、定制的实体信息了

六、Velocity 模板案例 

package ${package.Other}.po;

import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.util.Date;

/**
 * <p>
 * $!{table.comment} 数据表 ${humpEentityName} 数据库表映射实体驼峰名称
 *      基础设施层请求实体
 * </p>
 *
 * @author ${author}
 * @since ${date}
 */
@Getter
@Setter
public class ${entity}PO implements Serializable {

    private static final long serialVersionUID = 1L;

    #foreach($field in ${table.fields})

    #if(${field.keyFlag})
        #set($keyPropertyName=${field.propertyName})
    #end
    #if("$!field.comment" != "")
    /**
     * ${field.comment}
     */
    #end
    private ${field.propertyType} ${field.propertyName};
    #end

    /**
     * 当前页
     */
    private Integer page = 1;

    /**
     * 每页条数
     */
    private Integer pageSize = 20;

}

以上 Velocity 中的相关配置,这里不做相关解释,大家可以直接查看 mybatis plus generator 3.5.1 jar 包中的基础模板中找寻其他配置,你也可以通过 InjectionConfig # beforeOutputFile 方法将入参都打印出来找相应的入参就可以,也可以通过 InjectionConfig # customMap 方法自定义入参。

从上图可看到 mybatis plus generator 3.5.1 在jar 中支持多种生成模板,Velocity只是其中的一种,大家可根据自己的喜好选择相应的模板。

七、总结

mybatis plus generator 的源码相对简单,大家可以通过源码就定制研发。

springboot mybatis-plus 3.5.1代码生成器配置 mybatis-plus 最新版本3.5.1代码生成器配置教程 阅读详情

相关推荐

实战讲解MybatisPlus DO PO BO DTO VO 数据模型及其流转 附视频

在使用MybatisPlus作为DAO层访问数据库日益普及的今天,相应数据模型的理解变得越发的重要。如何应对企业级复杂多变的场景、如何将代码书写的更为整洁,这些都是广大技术朋友需要思考的问题。本文将从实战的角度带来基于MybatisPlus作为DAO层访问数据库的前提下,解释各种数据模型的内涵以及数据模型之间的流转问题。本文有视频版,传送门纸上得来终觉浅,深刻理解各种概念的内涵只有通过实战编码,才能理解其概念的内涵。

Java知识图谱的博客 3564

mybatis-plus-generator 3.5.1代码生成器实战

学习如果利用mybatis plus自动生成代码神器解放我们的双手,不再为增删改查重复性的代码耗费时间,专业写核心业务代码

qq_23916389的博客 1493

MyBatis-Plus——代码生成器(3.5.1+版本)

我们只需要通过填空的方式去配置数据源(DataSource),全局配置(GlobalConfig),包配置(PackageConfig),策略配置(StrategyConfig)和模板引擎配置(TemplateEngine)即可。注:模板引擎配置,默认 Velocity 可选模板引擎 Beetl 或 Freemarker,实际使用中只导入使用模板对应的依赖即可,不用全部导入。策略配置中需要对 Mapper,Service,Entity,Controller 类的生成策略进行单独的配置。

赵士杰——成功并非一蹴而就,而是在持之以恒的努力中逐渐实现。 2351

群晖Web Station实战:从零搭建个人静态导航站

本文详细介绍了如何利用群晖NAS自带的Web Station套件,从零开始搭建个人静态导航站。通过安装Web Station、上传静态网站源码、配置网页服务与网络门户等步骤,无需代码基础即可实现内网访问。文章还分享了文件权限设置、个性化定制及常见问题排查等实用技巧,帮助用户高效管理个人常用网址,充分挖掘NAS的服务器潜能。

tea88的博客 1321

【ADCU详解】PMIC电源管理集成电路详解

自动驾驶域控制器(ADCU)中的电源管理集成电路(PMIC)是高度集成的关键部件,负责为计算核心、传感器等提供高效稳定的多路电源。其核心特点包括:符合车规AEC-Q100标准、支持功能安全ASIL等级、精确的时序控制及强抗干扰能力。PMIC由开关稳压器、LDO、时序控制器、监控保护电路等模块组成,通过分层电源树框架实现电能分配。设计需考虑效率、功率密度、噪声性能等关键维度,底层基于Buck转换器和LDO原理工作。使用中需满足严苛的车规环境要求,并通过静态/动态测试及故障注入测试进行验证,确保系统可靠性和安全

qq_40844444的博客 834

Mybatis-plus-Generator 3.5.5 自定义模板支持 (DTO/VO 等) 配置

上面是官方文档的案例,存在两个问题,一个并没有other这个属性,第二个框生成的DTO实体会在系统parent目录下。本着要弄就要完美的执着,通过一下午翻阅mybatis-plus-generator 的源码,终于找到定位输出目录类配置CustomFile。下面直接上代码

爱新觉罗的博客 2190

前端埋点的实践

1、前言 开始正文前先介绍一下埋点的概念~,(熟悉的朋友可以略过) 前端埋点: 是一种手段,它的目的是上报相关行为数据,相关人员以数据为依据来分析产品在用户端的使用情况,根据分析出来的结果辅助产品优化、迭代。 BI:商业智能,公司内部做数据分析相关的部门。 2、背景 在流量红利逐渐消失的现在,数据的采集、分析和精细化的运营显得更加重要,所以埋点的需求在互联网产品中是很常见的,目的上面也提到了。我们的追求就是又快又好的做好埋点工作,但是现实却不那么美好;目前我们团队在前端埋点方面存在一些痛点: 在构造埋点字段

Arui_0的博客 1765

代码生成器-mybatis-plus-generator

代码生成器

weixin_41998947的博客 1万+

Coze智能体网页集成实战:从零搭建免登录AI助手

本文详细介绍了如何利用Coze Chat SDK从零开始为网站集成免登录AI助手。通过获取访问令牌和智能体ID,仅需几行JavaScript代码即可将功能完整的对话窗口嵌入网页,实现开箱即用的智能交互。文章重点讲解了核心部署步骤、会话隔离方案以及UI深度定制方法,帮助开发者快速打造贴合品牌、提升用户体验的网页AI助手。

gold8的专栏 548

【OCPP】ocpp1.6协议3.3章节:功能配置文件及接口

Smart Charging Profile中定义了4个接口请求,即GetCompositeSchedule、ClearChargingProfile、SetChargingProfile和ClearCache等。Smart Charging: 包含智能充电相关的功能,如计划充电,报告充电计划,并改变充电速度。Core: 包含电动汽车充电相关的基础功能,如启动和停止充电,更改充电配置,报告充电状态等。Reservation: 包含预约服务相关的功能,如创建,取消和更改预约。

qq_53871375的博客 2164

Mybatis-Plus 自动生成代码-当前最新版

Mybatis-Plus generator 3.5.1 自动生成代码@[TOC](Mybatis-Plus generator 3.5.1 自动生成代码)起源说明、问题、解决代码 1. 使用的是velocity做模板引擎,为了兼容之前的,自定义变量、自定义模板 2. 基本使用的是自定义模板,模板大家需求都不太一样,所以这里不贴太多,只发一个做参考 3. 重写了templateEngine的outputCustomFile方法,主要是因为希望自己定义自定义模板的生成路径

莫莫绵的博客 1456

【YOLOv11多模态涨点改进】独家创新首发| TGRS 2026 |引入 CIFusion 通道交互融合模块,通过跨特征交互机制强化目标区域响应,适合多模态融合目标检测,小目标检测高效涨点

🔥本文提出了一种改进YOLOv11多模态目标检测模型的方法,通过引入CIFusion通道交互融合模块来提升RGB与红外特征融合效果。CIF模块采用通道级自适应交互机制,根据全局上下文动态分配不同模态通道的重要性,实现跨模态特征交互与互补信息融合。相比传统拼接或加权融合方式,CIF能够增强目标区域响应,抑制背景噪声,提高小目标和低对比度目标的检测性能。实验表明,该方法在DroneVehicle等数据集上显著提升了检测精度。论文还详细介绍了CIF模块的结构原理、实现代码及模型配置方法。

Ai缝合怪、助力小伙伴高效发论文 184

使用MyBatis_Generator生成Dto、Dao、Mapping

1.建立表语句如下

SHEN525758203的专栏 1064

【100%通过率】华为机试真题 Python 实现【对称美学】【2022.11 Q4 新题】

对称就是最大的美学,现有一道关于对称字符串的美学。 已知: 第1个字符串:R 第2个字符串:BR 第3个字符串:RBBR 第4个字符串:BRRBRBBR 第5个字符串:RBBRBRRBBRRBRBBR相信你已经发现规律了,没错! 就是第i个字符串=第i-1号字符串的取反+第i-1号字符串。取反即(R->B,B->R); 现在告诉你n和k,让你求得第n个字符串的第k个字符是多少。(k的编号从0开始)

MISAYAONE的博客 1万+

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

「案例DEMO」直接用maven插件生成springboot2.5.4+mybatis-plus3.5.3.2+hikari+swagger2 2.9.2项目并运行

单表增删改查功能,并实现批量插入更新删除功能;hikari为springboot推荐的数据库连接池,据说性能还可以;json格式化主要使用jackson框架,并处理时间返回格式问题,该框架也是springboot推荐,个人不喜欢fastjson、gson;多环境配置;slf4j1.7.26+logback1.2.3,并添加xxx-over-slf4j包,把其他日志转化到slf4j;统一异常捕获;统一返回对象;

Java Farmer 510

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

MP代码生成器工具类

适用版本:mybatis-plus-generator 3.5.1 及其以上版本,示例使用: mybatis-plus:3.5.1,freemarker:2.3.31,建议使用freemarker模板,freemarker可以配置DTO/VO,更多详情参考MP官网。

qq_40775688的博客 292

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Mybatis-plus generator 3.5版本配置

Mybatis-plus generator 3.5版本配置,entity,mapper

zhangyl812的博客 2359

mybatis-plus-generator 3.5版本 自动生成代码

使用最新版本的mybatis-plus-generator 3.5.3 自动生成mybatis plus的entity,service, serviceImpl,mapper,接口,mapper xml 文件

王广帅--游戏开发-服务器开发 3193

mybatis plus(3.5.1)代码自动生成器,配置及使用

1.创建maven项目,及文件夹 2.项目依赖:pom.xml <?xml version="1.0" encoding="UTF-8"?> <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 ht.

m0_49665279的博客 1160

SpringBoot集成Mybatis-Plus最新代码自动生成器v3.5.1

SpringBoot集成Mybatis-Plus最新代码自动生成器v3.5.1 详细链式写法注解

Vinjcent 5644

MybatisPlus3.5.1-基础及进阶

pom.xml <dependency> <!-- web--> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency><!-- mybati

weixin_45947759的博客 1402

Mybatis-plus 自定义模板生成代码DTO、VO等

这里主要是介绍 Mybatis-plus 通过自定义模板自动生成增删改查等代码等,方便以后查阅!!!

王林的博客 8593

SpringBoot 集成MyBatis-Plus-Generator(最新版3.5.2版本)自动生成代码(附带集成MyBatis-Plus)

相信大家厌烦重复的造轮子过程,编写与数据库表对应的实体类,接着再进行创建各种层次的包(mapper,service,impl),而现在一款神器登场了,它就是:MpBatis-Plus的代码自动生成器。能够节约大部分时间,还能覆盖许多增删改查方法,加快我们的开发速度。

qq_58141314的博客 8815

【MyBatisPlus Generator】Kotlin/Java 使用 2023 最新版 MyabtisPlus 代码生成器详细教程(Generator3.5+)

MybatisPlus Generato r代码生成器,2023年5.3+版本 Kotlin/Java 使用教程

qq_41567818的博客 2419

SpringBoot集成MyBatis-Plus + MyBatis-Plus(3.5.3版本)代码生成器

SpringBoot系列 - 集成MyBatis-Plus + MyBatis-Plus(3.5.3版本)代码生成器

小草的博客 1万+
上一篇: 图解 Excel 添加数据透视表
下一篇: CORS跨域not a secure more-private排查及修复记录-Chrome最新版
TimerBin
博客等级 码龄12年 54粉丝 119原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值