当前位置: 首页 > news >正文

工具MyBatis Generator(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的最小配置

元素指定如何连接数据库

元素指定生成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.lryc.cn/news/363807.html

相关文章:

  • NeuralForecast 模型的参数 windows_batch的含义
  • 【记录】打印|用浏览器生成证件照打印PDF,打印在任意尺寸的纸上(简单无损!)
  • 【python实现】实时监测GPU,空闲时自动执行脚本
  • chrome 浏览器历史版本下载
  • 【设计模式】工厂模式(创建型)⭐⭐⭐
  • Postman 连接数据库 利用node+xmysql
  • 挑战你的数据结构技能:复习题来袭【6】
  • 如何反编译jar并修改后还原为jar
  • 统计信号处理基础 习题解答10-5
  • Vue3实战笔记(60)—从零开始:一步步搭建Vue 3自定义插件
  • Java面向对象笔记
  • 如何通过PHP语言实现远程控制多路照明
  • Capture One Pro 23:专业 Raw 图像处理的卓越之选
  • 【主题广泛|投稿优惠】2024年交通运输与信息科学国际会议(ICTIS 2024)
  • 表格误删数据保存关闭后如何恢复?5个恢复方法大公开!
  • Go 语言中的切片:灵活的数据结构
  • 在鲲鹏服务器搭建k8s高可用集群分享
  • MySQL之数据库事务机制学习笔记(五)
  • linux 系统被异地登录,cpu占用拉满100%
  • 智慧校园应用平台的全面建设
  • 图论第6天
  • Redis教程(二十一):Redis怎么保证缓存一致性
  • android apk签名
  • flutter 解析json另类封装方式 List<bean>,哈哈哈
  • 哈希表(Hash table)
  • 【c语言】自定义类型-结构体
  • 2-链表-71-环形链表 II-LeetCode142
  • 【UnityShader入门精要学习笔记】第十七章 表面着色器
  • Python社会经济 | 怀特的异方差一致估计量
  • 《被讨厌的勇气》笔记