【数据库】mybatis生成java代码之AutoGenerator配置

news/2024/10/5 9:22:38

哈喽,大家好,我是木头左,AI改变生活!

本文将详细解释 MyBatis 生成 Java 代码的过程,包括全局配置、数据源配置和策略配置。

1. 全局配置

首先,我们需要创建一个 GlobalConfig 对象,用于配置 MyBatis 的全局设置。以下是一些常用的全局配置选项:

  • setOutputDir(String outputDir):设置生成 Java 代码的输出目录。
  • setFileOverride(boolean fileOverride):设置是否覆盖已存在的同名文件。
  • setActiveRecord(boolean activeRecord):设置是否生成 ActiveRecord 特性。如果不需要 ActiveRecord 特性,请设置为 false。
  • setEnableCache(boolean enableCache):设置是否启用二级缓存。
  • setBaseResultMap(boolean baseResultMap):设置是否生成 XML ResultMap。
  • setBaseColumnList(boolean baseColumnList):设置是否生成 XML columList。
  • setAuthor("pengzuo"):设置作者信息。
  • setMapperName("%s"):设置 Mapper 接口的命名规则。
  • setServiceImplName("%sDaoImpl"):设置 Service 实现类的命名规则。
  • setServiceName("I%sDao"):设置 Service 接口的命名规则。
  • setEntityName("%sEntity"):设置 Entity 类的命名规则。
  • setControllerName("%sController"):设置 Controller 类的命名规则。
    接下来,我们将这些全局配置应用到 MyBatis Generator(MBG)中:
GlobalConfig gc = new GlobalConfig();
gc.setOutputDir(outPut + "java");
gc.setFileOverride(true);
gc.setActiveRecord(true);
gc.setEnableCache(false);
gc.setBaseResultMap(true);
gc.setBaseColumnList(false);
gc.setAuthor("mutouzuo");
gc.setMapperName("%s");
gc.setServiceImplName("%sDaoImpl");
gc.setServiceName("I%sDao");
gc.setEntityName("%sEntity");
gc.setControllerName("%sController");
mpg.setGlobalConfig(gc);

2. 数据源配置

数据源配置用于设置 MyBatis Generator 连接数据库的相关参数。以下是一些常用的数据源配置选项:

  • setDbType(DbType dbType):设置数据库类型,如 MySQL、PostgreSQL 等。
  • setDriverName(String driverName):设置数据库驱动类名。
  • setUsername(String username):设置数据库用户名。
  • setPassword(String password):设置数据库密码。
  • setUrl(String url):设置数据库连接 URL。
    接下来,我们将这些数据源配置应用到 MyBatis Generator(MBG)中:
DataSourceConfig dsc = new DataSourceConfig();
dsc.setDbType(DbType.POSTGRE_SQL);
dsc.setDriverName("org.postgresql.Driver");
dsc.setUsername(username);
dsc.setPassword(password);
dsc.setUrl(dbUrl);
mpg.setDataSource(dsc);

3. 策略配置

策略配置用于设置 MyBatis Generator 生成代码的策略,例如表名生成策略、字段常量生成策略等。以下是一些常用的策略配置选项:

  • setTablePrefix(String[] tablePrefix):设置需要生成代码的表的前缀。
  • setNaming(NamingStrategy naming):设置表名生成策略,如下划线转驼峰命名等。
  • setEntityColumnConstant(boolean entityColumnConstant):设置是否为实体类生成字段常量。
  • setEntityTableFieldAnnotationEnable(boolean entityTableFieldAnnotationEnable):设置是否为实体类生成字段注解。
  • setInclude(String[] include):设置需要生成代码的表名。
    接下来,我们将这些策略配置应用到 MyBatis Generator(MBG)中:
StrategyConfig strategy = new StrategyConfig();
strategy.setTablePrefix(new String[]{tablePrefix});
strategy.setNaming(NamingStrategy.underline_to_camel);
strategy.setEntityColumnConstant(true);
strategy.setEntityTableFieldAnnotationEnable(true);
strategy.setInclude(new String[]{"tb_app"});
mpg.setStrategy(strategy);

至此,我们已经完成了 MyBatis Generator 的配置。接下来,我们可以运行 MyBatis Generator 命令来根据配置文件生成 Java 代码。

我是木头左,感谢各位童鞋的点赞、收藏,我们下期更精彩!

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

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

相关文章

ESP32学习笔记:NVS分区永久保存数据

程序示例: /*ESP32 startup counter example with Preferences library.This simple example demonstrates using the Preferences library to store how many times the ESP32 module has booted. The Preferences library is a wrapper around the Non-volatile storage on …

Wireshark基础教程

Wireshark是非常流行的网络封包分析软件,可以截取各种网络数据包,并显示数据包详细信息。常用于开发测试过程各种问题定位。本文主要内容包括: 1、Wireshark软件下载和安装以及Wireshark主界面介绍。 2、WireShark简单抓包示例。通过该例子学会怎么抓包以及如何简单查看分析…

SQL 数据库学习 Part 1

数据和信息 信息 信息是客观存在的,是关于现实世界事物的存在方式或运动状态 数据 数据是用来记录信息的可识别的符号,是信息的具体表现形式 数据和信息的联系数据是信息的符号表示或载体 信息则是数据的内涵,是对数据的语义解释数据库 定义 数据库是长期存储在计算机内、有…

1_JAVA线程

Java 线程 1. 创建和运行线程 1.1 直接使用 Thread 例如: public class ThreadTest {public static void main(String[] args) {Thread t = new Thread() {public void run(){// 要执行的任务System.out.println(Thread.currentThread().getName()+" Running");}};/…

Go变量作用域精讲及代码实战

关注作者,复旦AI博士,分享AI领域与云服务领域全维度开发技术。拥有10+年互联网服务架构、AI产品研发经验、团队管理经验,同济本复旦硕博,复旦机器人智能实验室成员,国家级大学生赛事评审专家,发表多篇SCI核心期刊学术论文,阿里云认证的资深架构师,项目管理专业人士,上…

C# JavaScriptSerializer序列化时的时间处理详解

原文链接:https://www.jb51.net/article/122143.htm输出如下图所示: 猜测这里是由于js初始化时间的时候往往是向 1970/01/01 添加毫秒数,JavaScriptSerializer进行序列化的时候也会格式化为距离1970/01/01 到当该时间点GMT+0 时间的毫秒数, 如果直接反序列化可以看到少了8…

人工智能ChatGPT的多种应用:如何更好地提问

简介 ChatGPT 的主要优点之一是它能够理解和响应自然语言输入。在日常生活中,沟通本来就是很重要的一门课程,沟通的过程中表达的越清晰,给到的信息越多,那么沟通就越顺畅。 和 ChatGPT 沟通也是同样的道理,如果想要 ChatGPT 给到的信息越准确,越清晰,和它的沟通就至关重…

SQLite 自动插入时间戳

CREATE TABLE t1 (id INTEGER PRIMARY KEY,node_addr INT,channel_id INT,value INT,date TIMESTAMP NOT NULLDEFAULT (datetime(now, localtime) ) );