常见的代码生成器使用

news2025/2/25 16:38:00

常见的代码生成器使用

  • 目录
    • 概述
      • 需求:
    • 设计思路
    • 实现思路分析
      • 1.第一部分
      • 2.第二部分
  • 参考资料和推荐阅读

Survive by day and develop by night.
talk for import biz , show your perfect code,full busy,skip hardness,make a better result,wait for change,challenge Survive.
happy for hardess to solve denpendies.

目录

概述

需求:

设计思路

实现思路分析

1.第一部分

常见的代码生成器使用:
常见的Java代码生成器有以下几种:

  1. MyBatis Generator:用于生成MyBatis的Mapper接口、SQL映射文件以及Model实体类的代码。

  2. Hibernate Tools:用于根据数据库表生成Hibernate的Entity实体类和对应的映射文件。

  3. Spring Roo:一个开源的Java开发工具,可以通过命令行或者图形界面的方式生成Spring应用程序的各种代码。

  4. JHipster:一个用于生成现代化Java和JavaScript应用程序的代码生成器,可以快速生成Spring Boot、Angular或者React等框架的代码。

  5. Apache CXF Codegen:用于生成基于Apache CXF的Web服务的客户端和服务端的代码。

  6. Velocity:一个Java模板引擎,可以通过模板文件生成各种Java代码。

  7. JCodeModel:一个Java代码生成库,可以通过代码的方式生成Java代码。

以上是一些常见的Java代码生成器,根据具体需求可以选择合适的代码生成器来提高开发效率。

2.第二部分

  1. Lombok:用于减少Java类中的冗余代码。通过添加注解,Lombok可以自动生成Getter、Setter、equals、hashCode等方法,简化了Java类的编写过程。

这里主要介绍Mybatis 的代码生成:
org.mybatis.generator是一个流行的Java代码生成器,用于生成基于MyBatis框架的持久层代码。下面是使用org.mybatis.generator进行代码生成的一般步骤:

  1. 添加依赖:在项目的构建工具中,如Maven或Gradle中,添加org.mybatis.generator的相关依赖项。
  <!--mybatise-generator-->
            <plugin>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-maven-plugin</artifactId>
                <version>1.3.2</version>
                <configuration>
                    <!--在此处指定配置文件位置-->
                    <configurationFile>src/main/resources/generatorConfig/generatorConfig.xml</configurationFile>
                    <verbose>true</verbose>
                    <overwrite>true</overwrite>
                </configuration>
                <!--mybatise-generator-->
                <dependencies>
                    <!--在此处引入所需依赖-->
                    <dependency>
                        <groupId>org.mybatis.generator</groupId>
                        <artifactId>mybatis-generator-core</artifactId>
                        <version>1.3.2</version>
                    </dependency>
                    <!--<dependency>-->
                        <!--<groupId>mysql</groupId>-->
                        <!--<artifactId>mysql-connector-java</artifactId>-->
                        <!--<version>5.1.44</version>-->
                    <!--</dependency>-->

                    <dependency>
                        <groupId>mysql</groupId>
                        <artifactId>mysql-connector-java</artifactId>
                        <version>8.0.17</version>
                    </dependency>
                </dependencies>
            </plugin>

2.增加配置文件:

在这里插入代码片
  1. 配置生成器:创建一个MyBatis Generator配置文件(通常是一个XML文件),指定生成器的参数和配置。配置文件中包括数据库连接信息、表信息、生成文件的路径和内容等。

在这里插入图片描述
范例如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
        PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
        "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">

<generatorConfiguration>
    <!--注意这里的targetRuntime="MyBatis3Simple",指定了不生成Example相关内容-->
    <context id="MysqlTables" targetRuntime="MyBatis3Simple">

        <commentGenerator>
            <property name="suppressDate" value="true"/>
            <!-- 是否去除自动生成的注释 true:是 : false:否 -->
            <property name="suppressAllComments" value="true"/>
        </commentGenerator>

        <!-- jdbc链接信息 -->
        <!--<jdbcConnection driverClass="com.mysql.jdbc.Driver"-->
                        <!--connectionURL="jdbc:mysql://192.168.2.42:3306/pj?useUnicode=true&amp;characterEncoding=UTF-8"-->
                        <!--userId="root" password="密码">-->
        <!--</jdbcConnection>-->

        <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
                        connectionURL="jdbc:mysql://192.168.2.42:3306/pj?useUnicode=true&amp;characterEncoding=UTF-8&amp;useSSL=false&amp;serverTimezone=UTC"
                        userId="root" password="密码">
        </jdbcConnection>


        <javaTypeResolver>
            <property name="forceBigDecimals" value="false"/>
        </javaTypeResolver>

        <!-- 生成PO类的位置 -->
        <javaModelGenerator targetPackage="me.njyd.po"
                            targetProject="src/main/java">
            <property name="enableSubPackages" value="true"/>
            <property name="trimStrings" value="true"/>
        </javaModelGenerator>

        <!-- mapper映射文件生成的位置 -->
        <sqlMapGenerator targetPackage="mapper.system"
                         targetProject="src/main/resources">
            <property name="enableSubPackages" value="true"/>
        </sqlMapGenerator>

        <!-- mapper接口生成的位置 -->
        <javaClientGenerator type="XMLMAPPER"
                             targetPackage="me.njyd.modules.system.mapper"
                             targetProject="src/main/java">
            <property name="enableSubPackages" value="true"/>
        </javaClientGenerator>

        <!-- 指定要生成的表,主鍵,po类名 -->
        <table tableName="cash" domainObjectName="Tcash">
            <property name="useActualColumnNames" value="true"/>
            <generatedKey column="a_id" sqlStatement="MySql" identity="true"/>
        </table>

    </context>
</generatorConfiguration>
  1. 定义表映射关系:在配置文件中定义数据库表与Java实体类的映射关系。可以指定实体类的包名、名称规则、字段映射等。
    支持联合主键等形式。

  2. 运行生成器:在代码中调用org.mybatis.generator的API,传入配置文件的路径,并运行生成器。生成器将读取配置文件,并根据配置生成对应的Java实体类、Mapper接口和XML映射文件。

在这里插入图片描述

  1. 查看生成结果:生成器将根据配置生成代码文件,并将其保存在指定的目录中。用户可以打开生成的文件,查看生成的代码,并将其集成到项目中。

这里会生成对应的文件,控制台会输出的。

需要注意的是,org.mybatis.generator还支持许多其他高级配置,如插件的使用、自定义注释、代码生成规则等。您可以根据具体需求查阅org.mybatis.generator的官方文档,了解更多详细的配置和使用方法。

参考资料和推荐阅读

参考资料
官方文档
开源社区
博客文章
书籍推荐

欢迎阅读,各位老铁,如果对你有帮助,点个赞加个关注呗!同时,期望各位大佬的批评指正~,如果有兴趣,可以加文末的交流群,大家一起进步哈

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1401335.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Django随笔

关于Django的admin 1. 在url中把 from django.contrib import admin 重新解开 把path(admin/,admin.site.urls), 解开 2. 注册app&#xff0c;在配置文件中写 django.contrib.admin, 3.输入命令进行数据库迁移 Django国际化 配置文件中&#xff08;改成中文&#xff09; LA…

【STM32F103】DMA直接存储器访问游戏摇杆模块(ADCDMAEXTI)

前言&#xff08;可忽略&#xff09; 当初下定决心要走嵌入式的时候买了一堆传感器&#xff0c;但是因为懒和忙所以闲置了一堆&#xff0c;今天考完了最后一门&#xff0c;所以打算一个个都玩一遍&#xff0c;今天先从这个摇杆开始&#xff0c;当初买这个是想着以后做个遥控小…

指标异常检测和诊断

检测 是发现问题 诊断 是找到原因 误差的分类 系统误差&#xff1a;系统误差是由于仪器本身不精确&#xff0c;或实验方法粗略&#xff0c;或实验原理不完善而产生的。随机误差&#xff1a;随机误差是由各种偶然因素对实验者、测量仪器、被测物理量的影响而产生的。粗大误差&…

动态规划——数字金字塔【集训笔记】

题目描述 观察下面的数字金字塔。写一个程序查找从最高点到底部任意处结束的路径&#xff0c;使路径经过数字的和最大。每一步可以从当前点走到左下方的点也可以到达右下方的点。 在上面的样例中,从13到8到26到15到24的路径产生了最大的和86。 输入 第一个行包含R(1≤ R≤…

4.servera修改主机名,配置网络,以及在cmd中远程登录servera的操作

1.先关闭这两节省资源 2.对于新主机修改主机名&#xff0c;配置网络 一、配置网络 1.推荐图形化界面nmtui 修改完成后测试 在redhat ping一下 在redhat远程登录severa 2、使用nmcli来修改网络配置 2.1、配置要求&#xff1a;主机名&#xff1a; node1.domain250.exam…

线程的取消学习笔记

目录 取消线程-pthread_cancel: 线程清理&#xff1a; 取消线程-pthread_cancel: int pthread_cancel(pthread_t thread);//杀死一个线程 示例代码&#xff1a; #include <stdio.h> #include <pthread.h> #include <unistd.h>void *func(void *arg) {p…

[医学多模态融合] 医学图像 + 文本数据 多模态模型发展及预训练模型应用

[医学多模态融合] 医学图像 文本数据 多模态模型发展及预训练模型应用 0. 前言1. 图像数据 多模态模型的发展2. ConVIRT2.1 模型设计2.2 数据集及训练2.3 应用及表现2.3.1 分类任务2.3.2 Zero-shot任务 3. CLIP3.1 模型设计3.2 数据集及训练3.2.1 图像编码器3.2.2 文本编码器 …

用日期类增强对几个默认函数的的理解

首先写一个日期类&#xff1a;包括打印&#xff0c;根据月份判断天数 用类创建对象默认需要构造函数&#xff1b;且也要判断构造出的日期是否符合常理&#xff1a; 在程序结束时需要一个析构函数来释放空间&#xff0c;&#xff08;日期类的对象不会开空间这里只是写出来演…

python—01虚拟环境

文档结构 1、概念简介2、环境配置2.1、多版本解释器2.2、指令创建虚拟环境2.3、idea创建虚拟环境2.3.1、pycharm 1、概念简介 虚拟环境 在某些场景下&#xff0c;不同的项目需要基于不同版本的Python解释器来开发&#xff0c;或者不同的项目需要的第三方包或模块版本也不同。当…

C# Socket通信从入门到精通(17)——单个异步UDP服务器监听一个客户端C#代码实现

前言: 我们在开发UDP通信程序时,除了开发UDP同步客户端程序,有时候我们也需要开发异步UDP服务器程序,所谓的异步最常见的应用就是服务器接收客户端数据以后,程序不会卡在数据接收这里,而是可以继续往下执行,这在实际项目中是经常会遇到的,所以说掌握异步UDP服务器程序…

从关键新闻和最新技术看AI行业发展(2024.1.1-1.14第十四期) |【WeThinkIn老实人报】

Rocky Ding 公众号&#xff1a;WeThinkIn 写在前面 【WeThinkIn老实人报】旨在整理&挖掘AI行业的关键新闻和最新技术&#xff0c;同时Rocky会对这些关键信息进行解读&#xff0c;力求让读者们能从容跟随AI科技潮流。也欢迎大家提出宝贵的优化建议&#xff0c;一起交流学习&…

【论文阅读】Relation-Aware Graph Transformer for SQL-to-Text Generation

Relation-Aware Graph Transformer for SQL-to-Text Generation Abstract SQL2Text 是一项将 SQL 查询映射到相应的自然语言问题的任务。之前的工作将 SQL 表示为稀疏图&#xff0c;并利用 graph-to-sequence 模型来生成问题&#xff0c;其中每个节点只能与 k 跳节点通信。由…

AWTK 开源串口屏开发(7) - 屏幕保护

现代屏幕其实并不需要屏幕保护&#xff0c;不过屏幕保护程序会衍生一些其它用途。比如&#xff1a; 保护隐私。长时间不操作&#xff0c;通过动画或者其它方式隐藏屏幕内容。数据安全。长时间不操作&#xff0c;需要输入密码才能恢复。美观/广告。长时间不操作&#xff0c;显示…

CMeet系列技术生态沙龙---城市开发者组织年度聚会·杭州 《把握未来趋势,持续学习创新》

CSDN始终致力于促进城市区域内尖端新兴技术开发者交流,提供开放自由的切磋平台。在这个充满挑战和机遇的一年即将结束之际&#xff0c;通过本次聚会&#xff0c;汇聚杭州本地各行各业的开发者朋友&#xff0c;回顾过去一年城市社区的成就和收获&#xff0c;感谢携手同行的各位,…

Spring中动态注册和销毁对象

1. 使用说明 通常我们项目中想要往spring容器中注入一个bean可以在项目初始化的时候结合Bean注解实现。但是该方法适合项目初始化时候使用&#xff0c;如果后续想要继续注入对象则无可奈何。本文主要描述一种在后续往spring容器注入bean的方法。 2. 实现 2.1 说明 2.1.1 注册…

记一次多平台免杀PHP木马的制作过程

注意&#xff1a;本文转载自本作者稀土掘金博客 博客地址&#xff1a; 御坂19008号 的个人主页 - 动态 - 掘金 文章目录 前言声明绕过情况使用方法运行环境绕过点介绍技术原理讲解变量传值覆盖模块代码执行阻断模块InazumaPuzzle程序锁定器PerlinNoise危险函数生成与执行类构造…

小样本跨域(cross-domain)系列工作(超级详细)

小样本跨域&#xff08;cross-domain&#xff09;系列工作 本文记录近期阅读过的小样本跨域相关论文&#xff0c;每一篇文章都经过了自己的深入思考和总结&#xff0c;按照&#xff1a;解决什么问题、动机、方法、数据集、结论和启发的顺序进行总结&#xff0c;同时会有部分细…

algotithm -- 排序算法

排序算法总结表&#xff1a; 1. In-place 和 Out-place 含义 参考链接 in-place 占用常数内存&#xff0c;不占用额外内存 假如问题规模是n&#xff0c;在解决问题过程中&#xff0c;只开辟了常数量的空间&#xff0c;与n无关&#xff0c;这是原址操作&#xff0c;就是In-…

谷歌浏览器通过network模拟HTTP中的GET/POST请求获取response

1、F12打开network选中需要模拟的方法Copy->Copy as fetch 2、通过AI帮你进行转换一下调用格式 原代码 fetch("https://mp.amap.com/api/forward/aggregate?mtop.alsc.kbt.intergration.toolkit.call.queryCallBlockInfo", {"headers": {"acce…

Grafana(三)Grafana 免密登录-隐藏导航栏-主题变换

一. 免密登录 Grafana 的常用方式&#xff1a; 将配置好的Grafana图嵌入到系统页面中 为了实现可免登录访问&#xff0c;可以通过如下方式进行设置&#xff1a; 1. 修改Grafana配置文件 在Grafana的配置文件 /etc/grafana/grafana.ini 中&#xff0c;找到 [auth.anonymous] 配…