工具MyBatis Generator(MBG)

Mybatis详解系列(五)–Mybatis Generator和全注解风格的MyBatis3DynamicSql 简介 Mybatis Generator (MBG) 是 Mybatis 官方提供的代码生成器,通过它可以在项目中自动生成简单的 CRUD 方法,甚至“无所不能”的高级条件查询(MyBatis3DynamicSql,有了它根本不需要 Mybatis Plus),让我们避免了进行数据库交互时需要手动创建对象和配置 Mybatis 映射等基础工作。 另外,MBG 有很好地扩展性,它提供了大量... 阅读详情

MyBatis Generator(MBG),这是官方帮我们提供的一个自动生成代码的工具,前面的课程中,我们都是脑袋里想好,pojo有哪些属性,属性的类型是什么,对应的数据表中的字段名字是什么,匹配的类型是什么.....然后还要写接口xxxDao,以及它的实现配置文件xxxDao.xml等等都是手动自己操作,以前我们学习Hibernate的时候,感觉方便就是写好pojo启动服务器Hibernate会自动帮助我们生成对应的数据表,MyBatis也有类似的工具,MBG就是官方给我提供的这样的工具,但它和Hibernate有点不一样就是,Hibernate帮我们生成表,MBG帮我们根据表生成接口、pojo类和xml这些文件!方向是反的。

要使用MBG首先要导jar包和建立一个XML配置文件

<dependency>
    <groupId>org.mybatis.generator</groupId>
	<artifactId>mybatis-generator-core</artifactId>
	<version>1.3.7</version>
</dependency>

以下元素就是MBG的最小配置

  • jdbcConnection元素指定如何连接数据库
  • javaModelGenerator元素指定生成Model的目标package与目标project
  • sqlMapGenerator元素指定生成Mapping XML文件的目标package与目标project
  • (Optionally)javaClientGenerator元素指定生成Mapper(即DAO)文件的目标package与目标project, 如果不指定这个元素就不会生成Mapper文件
  • 至少一个table元素

下面是一个较为完整的示例,可以保存下来按需修改

<?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>

    <!-- 数据库的驱动, JAR/ZIP文件的全路径,maven工程,驱动已经依赖了,没用-->
    <classPathEntry location="/Program Files/IBM/SQLLIB/java/db2java.zip"/>

    <!--targetRuntime用MyBatis3, 也就是默认的, 其他我基本不会用->
    <context id="DB2Tables" targetRuntime="MyBatis3">

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

        <!--基础的数据库连接-->
        <jdbcConnection driverClass="COM.ibm.db2.jdbc.app.DB2Driver"
                        connectionURL="jdbc:db2:TEST"
                        userId="db2admin"
                        password="db2admin">
        </jdbcConnection>

        <!--Java类型解析器, 目前也就只有forceBigDecimals可以给你玩-->
        <javaTypeResolver>
            <!--当数据类型为DECIMAL或者NUMERIC的时候, 如果是true的话则总是使用java.math.BigDecimal-->
            <!--以下是false, 即默认值的情况-->
            <!--如果有小数或者decimal长度大于18, Java类型为BigDecimal-->
            <!--如果没有小数, 以及decimal长度为10至18, Java类型为Long-->
            <!--如果没有小数, 以及decimal长度为5至9, Java类型为Integer-->
            <!--如果没有小数, 以及decimal长度少于5, Java类型为Short-->
            <property name="forceBigDecimals" value="false"/>
        </javaTypeResolver>

        <!--Domain生成器-->
        <javaModelGenerator targetPackage="test.model" targetProject=".\src\main\java">
            <!--据说可以自动添加schema名, 可是我没用到过-->
            <property name="enableSubPackages" value="true"/>

            <!--生成全属性构造器, 没什么用, 如果有指定immutable元素的话这个会被忽略-->
            <property name="constructorBased" value="true"/>

            <!--生成不可变的domain, 这个我也很少用-->
            <property name="immutable" value="true"/>

            <!--每个Domain都继承这个bean-->
            <property name="rootClass" value="com.github.prontera.domain.base.BasicEntity"/>

            <!--当遇到String的时候setter是否会先trim()-->
            <property name="trimStrings" value="true"/>
        </javaModelGenerator>

        <!--Mapping生成器-->
        <sqlMapGenerator targetPackage="test.xml" targetProject=".\src\main\java">
            <property name="enableSubPackages" value="true"/>
        </sqlMapGenerator>

        <!--Mapper生成器, 当type为ANNOTATEDMAPPER时是带有@annotation的Mapper, MIXEDMAPPER是XML文件-->
        <javaClientGenerator type="XMLMAPPER" targetPackage="test.dao" targetProject=".\src\main\java">
            <property name="enableSubPackages" value="true"/>

            <!--每个Mapper所继承的接口-->
            <property name="rootInterface" value="com.github.prontera.Mapper"/>
        </javaClientGenerator>

        <!--字段命名策略过程: <columnRenamingRule> >> property name="useActualColumnNames"-->
        <!--alias属性是个神器, 会为所有SQL都添加, 做关联的时候就非常方便了-->
        <!--至于什么Example, 全关了就是-->
        <table alias="ha" tableName="ALLTYPES" domainObjectName="Customer"
               enableCountByExample="false" enableUpdateByExample="false"
               enableDeleteByExample="false" enableSelectByExample="false"
               selectByExampleQueryId="false">

            <!--指定是否用数据库中真实的字段名, 而不是采用MBG转换后的驼峰-->
            <property name="useActualColumnNames" value="true"/>

            <!--自动集成改类-->
            <property name="rootClass" value="com.github.prontera.domain.base.HelloBasicClass"/>

            <!--Mapper自动继承的接口-->
            <property name="rootInterface" value="com.github.prontera.Mapper"/>

            <!--当遇到String的时候setter是否会先trim()-->
            <property name="trimStrings" value="true"/>

            <!--先进行columnRenamingRule, 再进行useActualColumnNames. 如果有columnOverride则忽略该配置-->
  <!--关于columnRenamingRule的具体例子 http://www.mybatis.org/generator/configreference/columnRenamingRule.html-->
            <columnRenamingRule searchString="^CUST_"      replaceString=""/>

            <!--顾名思义, 忽略某些列-->
            <ignoreColumn column="CREATE_TIME"/>

            <!--也是忽略数据列, 但是可以通过正则表达式, except子元素是可选的, 代表忽略除UPDATE_TIME外的列-->
            <ignoreColumnsByRegex pattern=".*_TIME$">
                <except column="UPDATE_TIME"/>
            </ignoreColumnsByRegex>
        </table>

    </context>

Java的方法运行插件

   List<String> warnings = new ArrayList<String>();
   boolean overwrite = true;
   File configFile = new File("generatorConfig.xml");
   ConfigurationParser cp = new ConfigurationParser(warnings);
   Configuration config = cp.parseConfiguration(configFile);
   DefaultShellCallback callback = new DefaultShellCallback(overwrite);
   MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
   myBatisGenerator.generate(null);

增加Mybatis-generator生成的Mapper类和Mapper.xml里的方法 首先附上我扩展后项目的github地址:点击打开链接 为了项目的需要,需要在生成的Mapper里添加enableSelectNotDeleteAll、enableSelectNotDeleteByPrimaryKey方法。下面介绍实现的过程。 第一步:在generatorConfig.xml对应的dtd文件里添加table的属性,如下: <!ATTLIST table catalog 阅读详情

相关推荐

MyBatis Generator 代码自动生成器

Mybatis的逆向工程就是由代码生成器生成我们需要的代码和映射文件。我们在编写Mybatis程序时,基本都是围绕着pojo类,Mapper接口,Mapper.xml文件等文件来进行的。如果实际开发中数据库的表特别多,那么我们需要手动去写每一张表的pojo类,Mapper接口,Mapper.xml文件,这显然需要花费巨大的精力,而且可能由于表字段太多,哪里写错了都难以排除。所以我们在实际开发中,一般使用逆向工程方式来自动生成所需的文件,这也是企业中一种非常常见的方法。

IT小郭的技术博客 9778

Mybatis详解系列(五)--Mybatis Generator和全注解风格的MyBatis3DynamicSql

本文内容大致如下,由于篇幅较长,可选择阅读: 1. 如何使用 MBG 生成代码; 2. 详解 MBG 的配置,将配置使用自定义注释生成器、实体类中添加 toString/equals/hashCode方法等。 3. MyBatis3DynamicSql 风格(无 XML) API 的使用。 通过本文的学习,你将能够通过简单改造 MBG 来生成自己想要的代码,另外,我们也将认识强大的 MyBatis3DynamicSql 风格(它提供的条件类使用 Lambda 解耦,全注解,支持单表查询、多表查询、分页、排序

子月生的博客 5213

13.3.3 MBG其他配置(MyBatis Generator逆向代码生成工具) -《SSM深入解析与项目实战》

13.3.3 MBG其他配置(MyBatis Generator逆向代码生成工具) -《SSM深入解析与项目实战》 项目中所有的源码都可以在此链接的仓库中找到:https://github.com/chenhaoxiang/uifuture-ssm 文章目录公众号介绍13.3.3 MBG其他配置 公众号介绍 打扰了~ 程序编程之旅是由6年互联网从业经验的优快云博客专家谙忆,打造的互联网领域知名个人公众号。 公众号不只是有Java技术领域专业知识,也有算法、数据结构、企业级应用设计,还有诗和远方。 让你可

谙忆-陈浩翔 1303

mybatis-generator指定列进行自动生成代码

目前mybatis-generator已经升级到1.3.3,功能比较强大,但是目前从table中如果字段较多可以选择忽略生产的字段(通过ignoreColumn属性实现,http://generator.sturgeon.mopaas.com/configreference/ignoreColumn.html),如果一个table字段太多而只需要某几个字段,例如100个字段的表格中只要5个, 那...

weixin_30836759的博客 454

13.3.2 完整的MBG配置文件(MyBatis Generator逆向代码生成工具) -《SSM深入解析与项目实战》

13.3.2 完整的MBG配置文件(MyBatis Generator逆向代码生成工具) -《SSM深入解析与项目实战》 项目中所有的源码都可以在此链接的仓库中找到:https://github.com/chenhaoxiang/uifuture-ssm 文章目录13.3.2 完整的MBG配置文件MBG插件位置生成代码后的文件结构 13.3.2 完整的MBG配置文件 MBG的配置文件,如代码清单13-5所示。 代码清单13-5:MBG配置文件 <?xml version="1.0" encodin

谙忆-陈浩翔 1273

主标题:Mybatis Generator (MBG)实战详解

其中,jdbcConnection标签用于配置数据库连接信息,javaModelGenerator标签用于配置生成实体类的信息,sqlMapGenerator标签用于配置生成Mapper接口的信息,javaClientGenerator标签用于配置生成Mapper XML文件的信息,而table标签则用于指定要生成的表名。Mybatis Generator (MBG)是Mybatis官方提供的一款代码生成工具,通过配置文件自动生成实体类、Mapper接口以及对应的xml文件,极大地提高了后台开发的效率。

m0_63411861的博客 452

MyBatis逆向工程--MyBatis Generator (MBG)代码生成工具的使用

人工智能,零基础入门!http://www.captainbed.net/inner 一、新建一个maven项目,pom文件引入jar包依赖: <!-- MBG==MyBatis逆向工程代码生成依赖包 --> <dependency> <groupId>org.mybatis.generator</groupId> <...

code_monkey的博客 19万+

MyBatis Generator自动生成工具详解与实践

MyBatis Generator是一个开源的代码生成器,用于快速生成MyBatis的Mapper接口、Model对象以及XML映射文件。其核心功能是根据数据库表结构自动构建相应的数据访问层(DAO)代码。可扩展标记语言(Extensible Markup Language,简称XML)是一种标记语言,它定义了一种使电脑之间交换数据的方式。其历史可以追溯到SGML(标准通用标记语言),由World Wide Web Consortium(W3C)进行维护和标准化。

weixin_29069575的博客 1455

MyBatis框架核心之(十)Mybatis generator(MBG)代码生成工具

十、Mybatis generator (MBG)自动生成持久层代码 简介:mybatisgenerator是用来给持久层自动生成代码的,会根据表中的字段,和你在配置文件之中的设置,自动生成数据库的查询语句和实体类,大大的提高了开发的效率,与hibernate的你逆向生成有点像   mybatis-generator自动生成代码有三种用法: 1.   命令行 2.  eclipse插件

弱弱的猿 998

【EtherCAT实践篇一】TwinCAT 3安装、使用

FULL(XAE)安装包:包含了XAR的功能,并能进行多种语言的编程和硬件组态,通常安装在编程电脑上;XAR安装包:包含了ADS的功能,是实时运行环境,对 TwinCAT 模块进行加载、执行、管理、实时运行与调用,通常安装在PLC中;RM安装包:在装了高版本的TwinCAT 3后,发现PLC中的TwinCAT版本较低,就需要安装相应低版本的RM安装包切换版本使用(注:4024无法使用RM安装包切换到低于4022的版本,如4020/4018/4016版本。

JXES智能生态系统 5132

Nmap的介绍、安装 并进行网络扫描

Nmap概述 Nmap(Network Mapper(网络映射器))是一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端。确定哪些服务运行在哪些连接端,并且推断计算机运行哪个操作系统(这是亦称 fingerprinting)。它是网络管理员必用的软件之一,以及用以评估网络系统安全。 正如大多数被用于网络安全的工具,nmap 也是不少黑客及骇客(又称脚本小子)爱用的工具 。系统管理员可以利用nmap来探测工作环境中未经批准使用的服务器,但是黑客会利用nmap来搜集目标电脑的网络设定,从而计划攻击的方法。

Cheney ' blog 2万+

MBG工具类-mybatis自定义代码生成器(Generator)

MBG工具类-mybatis自定义代码生成器(Generator)

石磊的博客 2345

如何在项目中集成bpmn-process-designer

文章目录一、bpmn-process-designer是什么?二、使用步骤1.将下面地址的代码下载到本地2.替换dependencies和devDependencies3.拷贝package目录4.在main.js引入代码5.拷贝src5.拷贝App.vue代码注意事项 一、bpmn-process-designer是什么? bpmn-process-designer是一个基于 bpmn.js,Vue 2.x 和 ElementUI 开发的流程设计器(前端部分),支持监听器,扩展属性,表单等配置,可自由扩展

weixin_43550766的博客 9454

Mybatis generator,MBG使用详细介绍,MBG xml合并,Java合并,Lombok

Mybatis,Mybatis generator MBG,lombok mybatis java合并,xml合并,model合并,Mapper合并。

Mdzzesb的博客 1658

【深度排查】VScode 远程 SSH 连接失败:从网络握手到服务部署的全链路诊断指南

本文详细解析了VScode远程SSH连接失败的常见原因及解决方案,从基础网络排查到SSH服务配置,再到VScode特有的问题处理。特别针对Ubuntu和TrueNAS系统提供了具体配置建议,帮助开发者快速解决'Could not establish connection'等连接问题,提升远程开发效率。

weixin_30301449的博客 447

qt工程引入opencv库步骤

第一步:新建qt工程 第二步:在工程名.pro文件中添加opencv库的路径                   INCLUDEPATH += /home/liyuanzhe/opencv-2.4.8/include/opencv \ /home/liyuanzhe/opencv-2.4.8/include/opencv2 LIBS += /home/liyuanzhe/open

superyuanzhe的专栏 5723

可视化逆向工程利器 mybatis-generator-gui-extension:一张图看懂 MyBatis 代码生成器能做什么

如果你还在为手写 MyBatis 的 Mapper、XML 和实体类而烦恼,那么这款主打**可视化逆向工程**的 **MyBatis 代码生成器**——mybatis-generator-gui-extension 一定能帮到你。它是 MyBatis Generator(MBG)的图形化界面扩展,把原本晦涩的 XML 配置全部变成所见即所得的勾选操作,还能一键生成 Service、Controll

gitblog_01057的博客 396

Spring AI Alibaba实战训练营-28 手把手教你用SAA+ Nacos 构建分布式 MCP 应用

本文介绍如何使用Spring AI Alibaba和Nacos构建分布式MCP应用,实现AI模型与工具服务的动态发现和调用。主要内容包括:1) 项目架构设计,包含MCP Server、Nacos注册中心和MCP Client三个核心组件;2) 环境准备要求,如Java 17+、Maven 3.6+、Nacos 3.1.0+等;3) 详细实施步骤:启动Nacos服务、注册MCP服务端、配置MCP网关聚合服务、设置MCP客户端发现机制。通过这种架构,开发者可以轻松扩展新工具服务,无需修改客户端代码,实现服务动态

program哲学 311

Mybatis generator,MBG使用详细介绍,MBG xml合并,Java合并

Mybatis generator mybatis 自动生成代码工具介绍 mybatis使用起来轻便,可编写Sql。受到很多开发者的喜爱。但是由于项目需要大量sql也让人很烦躁。 所以mybatis自己开发出了自动生成代码工具。 mybatis MBG官方源码 MBG官方文档 官方文档很详细但是还是有一些很好用的功能细节没有提及,在这里简单介绍一下。 MBG生成的代码是可以和mybatis发行的版本兼容的。 targetRuntime 生成代码的目标 MyBatis3DynamicSql 要求MyBatis

斯旺森swanson 1081

Open3D 计算FPFH特征【2025最新版】

FPFH特征描述子的python实现,本文最新更新时间为:2025年3月18日。

点云侠的博客 5280

通信原理 | CRC循环冗余校验码(最简介明了的原理和matlab程序)

异或运算: 多项式: CRC校验中用到的除数,是由多项式的各项系数组成的,如下所示: 没有的项系数为0,比如:x5次方、x3次方下一步,在原数据串的末端加“0”0的数量由多项式决定具体来说,多项式的阶数是多少就加几个0 具体操作: 现在,我们有了除数,也有了处理过的数据串,如下所示: 就可以开始计算校验和 了将数据串第一个1与除数左对齐,按位进行异或操作: 将未处理的数据搬下来作为新的数据,重复操作: 将新的数据串第一个1与除数左对齐,再重复按位异或操作: 如此循环,直到所有数据都处理过

若北辰 2357

MyBatisGenerator(MBG)代码自动生成器,从此解放你的双手

MyBatis生成器(MBG)是MyBatis MyBatis和iBATIS的代码生成器。它将为MyBatis的所有版本以及2.2.0版之后的iBATIS版本生成代码。它将内省一个数据库表(或多个表),并生成可用于访问表的工件。这减少了设置对象和配置文件以与数据库表交互的最初麻烦。MBG试图对大部分简单CRUD(Create、Retrieve、Update、Delete)的数据库操作产生重大影响。仍然需要手工编写SQL和对象以用于连接查询或存储过程。

蔚蓝 1582

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

MyBatis Generator 逆向工程

官方文档 简称MBG,是一个专门为 MyBatis 框架使用者定制的代码生成器,可以快速的根据表生成对应的映射文件、接口,以及bean类。 支持基本的增删改查,以及QBC风格的条件查询。但是表连接、存储过程等这些复杂sql的定义需要我们手工编写。 使用 注意:如果在一个工程里面建立新的 Module ,在该 Module 里面生成,很容易出问题。最好就是,在一个工程的目录里面就生成。 数据库中建表。 工程目录 写 MBG 的配置文件,最好命名为 generatorConfig.xml 。文件保存在

weixin_42524843的博客 140

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

MyBatis Generator自动生成代码

MBG介绍 MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以对配置和原生Map使用简单的 XML 或注解,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。 MyBatis使得数据库操作变得非常

诗酒年华 2482
上一篇: 最新支持ChatGPT3.5/GPT4.0网站源码,AI系统源码,ChatGPT运营网站系统,支持GPTs应用、AI绘画、文档分析
下一篇: 【Mybatis】动态SQL的绑定和公共sql语句片段
synchronizeOn
博客等级 码龄3年 1193粉丝 64原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值