MyBatis Generator简介
发布日期:2021-05-16 10:23:19 浏览次数:11 分类:技术文章

本文共 2834 字,大约阅读时间需要 9 分钟。

前言

《》给我们提供了ORM解决方案,MyBatis Generator 是MyBatis的快速代码生成辅助工具。每个公司可以根据自己的代码规范,统一生成基础代码。

快速入门

通过以下demo可以直接java方式运行

String genCfg = "mbgConfiguration.xml";        File configFile = new File(GenMain.class.getResource(genCfg).getFile());        ConfigurationParser cp = new ConfigurationParser(warnings);        Configuration config = cp.parseConfiguration(configFile);        DefaultShellCallback callback = new DefaultShellCallback(overwrite);        MyBatisGenerator myBatisGenerator = null;        myBatisGenerator = new MyBatisGenerator(config, callback, warnings);        myBatisGenerator.generate(null);
依赖
org.mybatis.generator
mybatis-generator-core
1.4.0
mysql
mysql-connector-java
8.0.16
配置

核心配置文件

XML配置介绍

<context>

一个context可以看作一个数据库环境。 可以在 元素内列出多个元素, 以允许在MyBatis Generator的同一运行中从不同的数据库或具有不同的生成参数生成对象。

<connectionFactory> 或者 <jdbcConnection>

设置数据库连接。

<javaClientGenerator>

生成crud,可以设置生成的文件放在哪个包

<javaModelGenerator>

生成entity,可以设置生成的文件放在哪个包 一些主要功能

是否生成全字段构造函数
是否immutable,将决定是否生成set方法
set方法是否自动trim

<sqlMapGenerator>

用于定义SQL映射生成器的属性,当选择的javaClientGenerator需要XML时,此元素才是元素的必需子元素

<javaTypeResolver>

用于定义 Java 类型解析器的属性。Java 类型解析器决定了 数据库列 与 Java类型的对应关系

<commentGenerator>

定义注释生成器的属性

<domainObjectRenamingRule>

设置entity类名生成规则

比如当库中的所有表都有一个公共前缀,但是我们的entity名字里面不想要这个前缀

<table>

指定表,为该表生成代码(entity, crud方法, mapper)

一些主要配置项:

1. entity的名字 2. 是否使用真实列名作为属性名(否则就用驼峰) 3. 是否生成根据主键的select|delete|update4. 是否生成插入语句 5. 是否允许主键查询 6. 是否immutable,将决定是否生成set方法
  • <generatedKey>
    用于指定自动生成的字段(比如自增id)
    如果指定此元素,则MyBatis Generator(MBG)将在SQL映射的生成的元素内生成一个适当的 元素(根据sqlStatement不同而不同),insert的时候会把这个值赋值到对象中。
MySql -> SELECT LAST_INSERT_ID()
  • <columnOverride>
    property设置java属性名(一般不需要在columnOverride这个标签里面设置,可以在table标签统一设置成驼峰)
    制定列与属性的映射关系
    isGeneratedAlways=true 生成的insert update方法就不会去设置这个字段的值。
    typeHandler当默认的类型转换不能满足要求的时候可以自定义类型转换
  • <ignoreColumn>
    忽略某列,所有生成的代码里面都不会包含这列。
  • <ignoreColumnsByRegex>
    根据正则忽略列,可以指定except,这样正则就可以写得更加简单了。
  • <columnRenamingRule>
    设置entity中属性名生成规则
    比如当表中的所有列都有一个公共前缀,但是我们的entity里面不想要这个前缀。

自定义改造

  1. 乐观锁支持(version字段)
  2. 逻辑删除(deleted字段)
  3. BLOB字段支持
  4. 批量操作
  5. 自增主键

请移步github《》作者写的简单。

主要参考

《》

《》
《》

转载地址:https://blog.csdn.net/y3over/article/details/113359687 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Netty概述
下一篇:字符编码

发表评论

最新留言

网站不错 人气很旺了 加油
[***.192.178.218]2024年04月22日 02时14分48秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

【C++】攻克哈希表(unordered_map) 2019-04-27
转:【答学员问】- 该如何根据岗位学习相关技能 2019-04-27
转:【答学员问】有什么经验教训,是你在面试很多次之后才知道的? 2019-04-27
消息队列:解耦、异步、削峰,现有MQ对比以及新手入门该如何选择MQ? 2019-04-27
【奇技淫巧】-- 三角形最小路径和 2019-04-27
【小技巧】argc和argv的用法 2019-04-27
学不下去了怎么办? 2019-04-27
二叉树的前中后序遍历(迭代法)(带动画) 2019-04-27
【小技巧】【XShell】【Xftp】Windows桌面与Linux虚拟机互传文件 2019-04-27
【redis入门】Centos下安装redis 2019-04-27
【redis入门】redis安装后相关知识串讲 2019-04-27
【redis】来吧,展示一下redis 发布-订阅模式 2019-04-27
讲通C/C++预编译/条件编译指令 #ifdef,#ifndef,#endif,#define,… 2019-04-27
【redis6.0.6】redis源码慢慢学,慢慢看 -- 第二天:空间配置(zmalloc) 2019-04-27
当下热点词再学:redis缓存预热、更新、降级,限流 2019-04-27
【redis6.0.6】redis源码慢慢学,慢慢看 -- 第五天:adlist 2019-04-27
别抖,OK? 操作系统抖动现象、网络抖动与延迟、函数抖动之防抖与节流,串讲 2019-04-27
第六天:网络处理(anet部分)-- redis源码慢慢学,慢慢看【redis6.0.6】 2019-04-27
通过域名获取主机IP -- struct addrinfo 2019-04-27
【C++】算法集锦(8):从两数和问题拓展到一百数和问题 2019-04-27