工具MyBatis Generator(MBG)

devtools/2024/9/24 5:24:41/

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的最小配置

元素指定如何连接数据库

元素指定生成Model的目标package与目标project

元素指定生成Mapping XML文件的目标package与目标project

(Optionally)元素指定生成Mapper(即DAO)文件的目标package与目标project, 如果不指定这个元素就不会生成Mapper文件,至少一个table元素。

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

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfigurationPUBLIC "-//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>
</generatorConfiguration>

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);


http://www.ppmy.cn/devtools/46540.html

相关文章

【贪心算法题记录】53. 最大子数组和

题目链接 题目描述 给你一个整数数组 nums &#xff0c;请你找出一个具有最大和的连续子数组&#xff08;子数组最少包含一个元素&#xff09;&#xff0c;返回其最大和。 子数组 是数组中的一个连续部分。 题目分析 这道题我一开始想的是用双指针实现&#xff08;实际上也…

html 使用svg矢量图时无法 调整宽高问题解决,不能像图片一样设置宽高比例问题

引入的路径后加 #svgView(preserveAspectRatio(none)) 具体代码如下 修改前 <img src"/assets/svgs/full_screen_full.svg" class"im"> 修改后 <img src"/assets/svgs/full_screen_full.svg#svgView(preserveAspectRatio(none))" cla…

vue2中使用tinymce

vue2中使用tinymce的记录 本篇文章主要实现的功能&#xff1a; &#xff08;1&#xff09;【查看】时禁用编辑 &#xff08;2&#xff09;【编辑】时某些内容是不可编辑的 实现效果图&#xff1a; 第一个功能的主要代码 disabled属性 // 使用地地方&#xff0c;传递disabled属…

Nginx平滑升级

目录 编译安装nginx1.18 平滑升级至1.22版本 本文记录了编译安装的nginx1.18平滑升级到nginx1.22版本的流程&#xff0c;都采用的编译安装&#xff0c;有不清楚流程的可以评论区我&#xff0c;咱们一起讨论。 编译安装nginx1.18 # 安装编译依赖 yum -y install gcc pcre pc…

为什么会有websocket(由来)

一、HTTP 协议的缺点和解决方案 1、HTTP 协议的缺点和解决方案 用户在使用淘宝、京东这样的网站的时候&#xff0c;每当点击一个按钮其实就是发送一个http请求。那我们先来回顾一下http请求的请求方式。 一个完整的http请求是被分为request请求节点和response响应阶段的&…

容器项目之前后端分离

容器化部署ruoyi项目 #需要的镜像nginx、java、mysql、redis、 #导入maven镜像、Java镜像和node镜像 docker load -i java-8u111-jdk.tar docker load -i maven-3.8.8-sapmachine-11.tar docker load -i node-18.20.3-alpine3.20.tar #拉取MySQL和nginx镜像 docker pull mysql…

AI降重:如何有效降低毕业论文查重率?

现在大部分学校已经进入到论文查重降重的阶段了。如果查重率居高不下&#xff0c;延毕的威胁可能就在眼前。对于即将告别校园的学子们&#xff0c;这无疑是个噩梦。四年磨一剑&#xff0c;谁也不想在最后关头功亏一篑。 查重率过高&#xff0c;无非以下两种原因。要么是作为“…

Django中使用Celery和APScheduler实现定时任务

在之前的文章我们已经学习了Celery和APScheduler的基本使用&#xff0c;下面让我们来了解一下如何在Django中使用Celery和APScheduler Celery 1.前提工作 python 3.7 pip install celery pip install eventlet #5.0版本以下 pip install importlib-metadata4.8.3&#xff08…