问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

ProxyGenerator 属于哪个jar包

发布网友 发布时间:2022-04-11 22:21

我来回答

2个回答

热心网友 时间:2022-04-11 23:50

在MBG中,最主要也最重要的就是XML配置文件,因此本篇文章主要的内容就是XML配置。

  这里按照配置的顺序对配置逐个讲解,更细的内容可以配合中文文档参照。

  1. 配置文件头
  
  
  PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
  "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
  使用最新版的MBG需要使用上面的xml头,配置文件必须包含上面的DOCTYPE。

  2. 根节点
  generatorConfiguration节点没有任何属性,直接写节点即可,如下:

  
  
  
  3. 子元素
  从这段开始,就是配置的主要内容,这些配置都是generatorConfiguration元素的子元素。

  包含以下子元素(有严格的顺序):

   (0个或1个)
   (0个或多个)
   (1个或多个)
  3.1 元素
  这个元素用来指定外部的属性元素,不是必须的元素。

  元素用于指定一个需要在配置中解析使用的外部属性文件,引入属性文件后,可以在配置中使用 ${property}这种形式的引用,通过这种方式引用属性文件中的属性值。 对于后面需要配置的**jdbc信息**和targetProject属性会很有用。

  这个属性可以通过resource或者url来指定属性文件的位置,这两个属性只能使用其中一个来指定,同时出现会报错。

  resource:指定**classpath**下的属性文件,使用类似com/myproject/generatorConfig.properties这样的属性值。
  url:可以指定文件系统上的特定位置,例如file:///C:/myfolder/generatorConfig.properties
  3.2 元素
  这个元素可以0或多个,不受*。

  这个元素的作用是将MBG运行时需要用到的jar包(或zip格式)添加到**classpath**下。

  最常见的用法是,当**classpath**下面**没有**JDBC驱动的时候,我们通常通过这个属性指定驱动的路径,例如:

  
  如果需要用到其他的jar包,也可以这么配置,例如如果你开发了一个MBG的插件,你就可以通过这种方式加入到**classpath**

  这里注意上面重点强调的 没有,一般在项目中使用的时候,**classpath**下面都有JDBC驱动,因此从项目中启动的时候不需要配置该项。

  建议:由于该参数使用了绝对路径,因此不利用在不同电脑上通用,因此建议最好把需要的jar包放到项目的**classpath**下,避免每个人都得单独配置路径。

  3.3 元素
  在MBG的配置中,至少需要有一个元素。

  元素用于指定生成一组对象的环境。例如指定要连接的数据库,要生成对象的类型和要处理的数据库中的表。运行MBG的时候还可以指定要运行的。

  该元素只有一个**必选属性**id,用来唯一确定一个元素,该id属性可以在运行MBG的使用。

  此外还有几个**可选属性**:

  defaultModelType:**这个属性很重要**,这个属性定义了MBG如何生成**实体类**。
  这个属性有以下可选值:

  conditional:*这是默认值*,这个模型和下面的hierarchical类似,除了如果那个单独的类将只包含一个字段,将不会生成一个单独的类。 因此,如果一个表的主键只有一个字段,那么不会为该字段生成单独的实体类,会将该字段合并到基本实体类中。
  flat:该模型为每一张表只生成一个实体类。这个实体类包含表中的所有字段。**这种模型最简单,推荐使用。**
  hierarchical:如果表有主键,那么该模型会产生一个单独的主键实体类,如果表还有BLOB字段, 则会为表生成一个包含所有BLOB字段的单独的实体类,然后为所有其他的字段生成一个单独的实体类。 MBG会在所有生成的实体类之间维护一个继承关系。
  targetRuntime:此属性用于指定生成的代码的运行时环境。该属性支持以下可选值:

  MyBatis3:*这是默认值*
  MyBatis3Simple
  Ibatis2Java2
  Ibatis2Java5 一般情况下使用默认值即可,有关这些值的具体作用以及区别请查看中文文档的详细内容。
  introspectedColumnImpl:该参数可以指定扩展org.mybatis.generator.api.IntrospectedColumn该类的实现类。该属性的作用可以查看扩展MyBatis Generator。
  一般情况下,我们使用如下的配置即可:

  
  如果你希望不生成和Example查询有关的内容,那么可以按照如下进行配置:

  
  使用MyBatis3Simple可以避免在后面的中逐个进行配置(后面会提到)。

  MBG配置中的其他几个元素,基本上都是的子元素,这些子元素(有严格的配置顺序)包括:

   (0个或多个)
   (0个或多个)
   (0个或1个)
   (1个)
   (0个或1个)
   (1个)
   (0个或1个)
   (0个或1个)
   (1个或多个)

  其中属性比较特殊,后面讲解的时候都会和父元素一起进行讲解。在讲解属性前,我们先看看**什么是分隔符?**。

  这里通过一个例子说明。假设在Mysql数据库中有一个表名为user info,你没有看错,中间是一个空格,这种情况下如果写出select * from user info这样的语句,肯定是要报错的,在Mysql中的时候我们一般会写成如下的样子:

  select * from `user info`
  这里的使用的**反单引号(`)**就是**分隔符**,**分隔符**可以用于**表名**或者**列名**。

  下面继续看支持的属性:

  autoDelimitKeywords
  beginningDelimiter
  endingDelimiter
  javaFileEncoding
  javaFormatter
  xmlFormatter
  由于这些属性比较重要,这里一一讲解。

  首先是autoDelimitKeywords,当表名或者字段名为SQL关键字的时候,可以设置该属性为true,MBG会自动给表名或字段名添加**分隔符**。

  然后这里继续上面的例子来讲beginningDelimiter和endingDelimiter属性。
  由于beginningDelimiter和endingDelimiter的默认值为双引号("),在Mysql中不能这么写,所以还要将这两个默认值改为**反单引号(`)**,配置如下:

  
  
  属性javaFileEncoding设置要使用的Java文件的编码,默认使用当前平台的编码,只有当生产的编码需要特殊指定时才需要使用,一般用不到。

  最后两个javaFormatter和xmlFormatter属性**可能会**很有用,如果你想使用模板来定制生成的java文件和xml文件的样式,你可以通过指定这两个属性的值来实现。

  接下来分节对其他的子元素逐个进行介绍。

  3.3.1 元素

  该元素可以配置0个或者多个,不受*。

  元素用来定义一个插件。插件用于扩展或修改通过MyBatis Generator (MBG)代码生成器生成的代码。

  插件将按在配置中配置的顺序执行。

  有关插件的详细信息可以参考开发插件和提供的插件了解更多。

  3.3.2 元素

  该元素最多可以配置1个。

  这个元素非常有用,相信很多人都有过这样的需求,就是希望MBG生成的代码中可以包含**注释信息**,具体就是生成表或字段的备注信息。

  使用这个元素就能很简单的实现我们想要的功能。这里先介绍该元素,介绍完后会举例如何扩展实现该功能。

  该元素有一个可选属性type,可以指定用户的实现类,该类需要实现org.mybatis.generator.api.CommentGenerator接口。而且必有一个默认的构造方法。这个属性接收默认的特殊值DEFAULT,会使用默认的实现类org.mybatis.generator.internal.DefaultCommentGenerator。

  默认的实现类中提供了两个可选属性,需要通过属性进行配置。

  suppressAllComments:**阻止**生成注释,默认为false
  suppressDate:**阻止**生成的注释包含时间戳,默认为false
  一般情况下由于MBG生成的注释信息没有任何价值,而且有时间戳的情况下每次生成的注释都不一样,使用**版本控制**的时候每次都会提交,因而一般情况下我们都会屏蔽注释信息,可以如下配置:

  
  
  
  
  接下来我们简单举例实现生成包含表字段注释信息的注释

  因为系统提供了一个默认的实现类,所以对我们来说,自己实现一个会很容易,最简单的方法就是复制默认实现类代码到一个新的文件中,修改类名如MyCommentGenerator,在你自己的实现类中,你可以选择是否继续支持上面的两个属性,你还可以增加对其他属性的支持。

  我们通过下面一个方法的修改来了解,其他几个方法请自行修改(写本章的时候我也没有完全实现该类,所以不提供完整源码了):

  @Override
  public void addFieldComment(Field field, IntrospectedTable introspectedTable, IntrospectedColumn introspectedColumn) {
  if (introspectedColumn.getRemarks() != null && !introspectedColumn.getRemarks().equals("")) {
  field.addJavaDocLine("/**");
  field.addJavaDocLine(" * " + introspectedColumn.getRemarks());
  addJavadocTag(field, false);
  field.addJavaDocLine(" */");
  }
  }
  这个方法是给字段添加注释信息的,其中IntrospectedColumn包含了字段的完整信息,通过getRemarks方法可以获取字段的注释信息。上面这个方法修改起来还是很容易的。除了字段的注释外还有Getter和Setter,以及类的注释。此外还有生成XML的注释,大家可以根据默认的实现进行修改。

  完成我们自己的实现类后,我们还需要做如下配置:

  
  3.3.3 元素

  用于指定数据库连接信息,该元素必选,并且只能有一个。

  配置该元素只需要注意如果JDBC驱动不在**classpath**下,就需要通过元素引入jar包,这里**推荐**将jar包放到**classpath**下。

  该元素有两个必选属性:

  driverClass:访问数据库的JDBC驱动程序的完全限定类名
  connectionURL:访问数据库的JDBC连接URL
  该元素还有两个可选属性:

  userId:访问数据库的用户ID
  password:访问数据库的密码
  此外该元素还可以接受多个子元素,这里配置的属性都会添加到JDBC驱动的属性中。

  这个元素配置起来最容易,这里举个简单例子:

  
  connectionURL="jdbc:mysql://localhost:3306/test"
  userId="root"
  password="">
  
  3.3.4 元素

  该元素最多可以配置一个。

  这个元素的配置用来指定JDBC类型和Java类型如何转换。

  该元素提供了一个可选的属性type,和比较类型,提供了默认的实现DEFAULT,一般情况下使用默认即可,需要特殊处理的情况可以通过其他元素配置来解决,不建议修改该属性。

  该属性还有一个可以配置的元素。

  可以配置的属性为forceBigDecimals,该属性可以控制是否强制DECIMAL和NUMERIC类型的字段转换为Java类型的java.math.BigDecimal,默认值为false,一般不需要配置。

  默认情况下的转换规则为:

  如果精度>0或者长度>18,就会使用java.math.BigDecimal
  如果精度=0并且10<=长度<=18,就会使用java.lang.Long
  如果精度=0并且5<=长度<=9,就会使用java.lang.Integer
  如果精度=0并且长度<5,就会使用java.lang.Short
  如果设置为true,那么一定会使用java.math.BigDecimal,配置示例如下:

  
  
  
  3.3.5 元素

  该元素必须配置一个,并且最多一个。

  该元素用来控制生成的实体类,根据中配置的defaultModelType,一个表可能会对应生成多个不同的实体类。一个表对应多个类实际上并不方便,所以前面也推荐使用flat,这种情况下一个表对应一个实体类。

  该元素只有两个属性,都是必选的。

热心网友 时间:2022-04-12 01:08

在你安装的jre目录下的lib中,属于rt.jar包下的类
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
如何查被录取到的专业 怎样查被录取的专业 录取后怎样查询录取的专业 录取专业怎么查 已被录取怎么查专业 ghs网络语什么意思_ghs网络语意思出处含义介绍 纸箱企业管理软件 ghs什么意思网络(ghs什么意思网络用语) 《喜羊羊与灰太狼》大结局 0与任何数相加都得原数吗? java 中,什么是驱动类,驱动包? java工程链接sql2005数据库JAR驱动包出错 在Myeclipse下连接Microsoft SQLServer数据库,URL怎样填写,要那些JAR包~ eclipse中怎么把选中的变量全部换名 java项目中怎样批量替换一段文字? Eclipse:如何替换文件内容呢?是部分替换而不是全部替换 ECLIPSE 怎么样选中一个把同名字的全部改掉啊 eclipse怎样批量修改变量名 你知道怎么用mfc的单文档连接sql数据库吗? 在MFC中用ODBC访问SQLserver数据库的问题 关于编程和数据库!MFC(C++) mfc连接sqlserver MFC怎么连接数据库 MFC开发Oracle数据库,选择什么接口好 ps5重构数据库会造成啥影响 oracle数据库,结果集拆分重构。 psv重构数据库如何进 psv 重构数据库 作用 psv怎么重构数据库 如何重构数据库设计满足超类/子类层次结构需求 VB 应用程序如何重启自身 应用程序问题 关于电脑应用程序的问题 应用程序问题!求高手帮忙解决 为什么我电脑每次开机都会出现一个应用程序错误,哪里出问题了?要怎样解决?求助!! 应用程序错误! 经常应用程序进不去,重起就进去了! 应用程序没了 关于程序问题 IBM 与feDEx的全称是什么? 美国IBM公司裁老员工达10万多人,这属于年龄歧视吗? 日立与IBM是什么关系? 联想收购ibm的时遵循哪些法律条款? gdb 调试时候,怎么显示那一行的多个变量的值 我们在生产中需要养成哪些良好的习惯落实精益生产? 如何在java中取数据库服务器的当前时间 delphi中客户端如何获得服务器时钟时间 ASP如何获取SQL服务器上的当前时间 java 项目连接的不是本地的mysql数据库,怎么获取当前连接的数据库所在服务器的系统时间 c# 中如何取得当前时间后,把当前时间和数据库中的时间做判断,比如数据库中date的值为2011-01-11,当前时