首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何使用自己的XML配置实现自定义中介器?

如何使用自己的XML配置实现自定义中介器?
EN

Stack Overflow用户
提问于 2013-09-07 08:55:04
回答 1查看 2.1K关注 0票数 0

我正在尝试使用自己的实现WSO2 ESB (4.5.1)的自定义中介。我可以很好地使用中介器作为类中介器,配置如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<class name="test.synapse.mediator.TestMediator"/>

然而,我想要实现的是能够用如下的语法调用中介:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<t:TestMediator xmlns:t="test:mediator" />

在遵循了有关XML的可用帮助之后,当我试图使用中介使用自己的WSO2配置创建代理时,我得到了以下错误:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ERROR - MediatorFactoryFinder Unknown mediator referenced by configuration element : {test:mediator}TestMediator

不用说,我已经编写了两个文本文件,分别包含中介工厂类和序列化程序类的完全限定类名,并将它们放在包jar文件的META-INF/services目录中。

这是我的中介类的源代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package test.synapse.mediator;

import org.apache.synapse.MessageContext; 
import org.apache.synapse.mediators.AbstractMediator;

public class TestMediator extends AbstractMediator { 

    public boolean mediate(MessageContext context) { 
        System.out.println("TestMediator mediating!"); 
        return true;
    }
}

下面是我的调解员工厂的代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package test.synapse.mediator;

import java.util.Properties;

import javax.xml.namespace.QName;

import org.apache.axiom.om.OMElement;
import org.apache.synapse.Mediator;
import org.apache.synapse.config.xml.MediatorFactory;

public class TestMediatorFactory implements MediatorFactory {

    public static final QName QNAME = new QName("test:mediator", "TestMediator");

    @Override
    public Mediator createMediator(OMElement omElement, Properties properties) {
        return new TestMediator();
    }

    @Override
    public QName getTagQName() {
        return QNAME;
    }
}

下面是我的中介序列化程序的代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package test.synapse.mediator;

import org.apache.axiom.om.OMAbstractFactory;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMFactory;
import org.apache.synapse.Mediator;
import org.apache.synapse.config.xml.MediatorSerializer;

public class TestMediatorSerializer implements MediatorSerializer {

    public static final String MEDIATOR_CLASS_NAME = TestMediator.class.getName(); 

    @Override
    public String getMediatorClassName() {
        return MEDIATOR_CLASS_NAME;
    }

    @Override
    public OMElement serializeMediator(OMElement parent, Mediator mediator) {
        OMFactory factory = OMAbstractFactory.getOMFactory();
        OMElement element = factory.createOMElement(TestMediatorFactory.QNAME);
        parent.addChild(element);
        return element;
    }
}

最后,该项目的pom.xml文件的内容有些冗长:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <modelVersion>4.0.0</modelVersion>
  <groupId>test.synapse.mediator.TestMediator</groupId>
  <artifactId>TestMediator</artifactId>
  <version>1.0.0</version>
  <packaging>bundle</packaging>
  <name>TestMediator</name>
  <description>TestMediator</description>
  <build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.0</version>
            <configuration>
                <source>1.5</source>
                <target>1.5</target>
            </configuration>
        </plugin>
        <plugin>
        <groupId>org.apache.felix</groupId>
        <artifactId>maven-bundle-plugin</artifactId>
        <version>2.3.4</version>
        <extensions>true</extensions>
        <configuration>
          <instructions>
            <Bundle-SymbolicName>TestMediator</Bundle-SymbolicName>
            <Bundle-Name>TestMediator</Bundle-Name>
            <Bundle-ClassPath>.</Bundle-ClassPath>
            <Export-Package>test.synapse.mediator</Export-Package>
            <Import-Package>*; resolution:=optional</Import-Package>
            <Fragment-Host>synapse-core</Fragment-Host>
          </instructions>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-eclipse-plugin</artifactId>
        <version>2.9</version>
        <configuration>
          <buildcommands>
            <buildcommand>org.eclipse.jdt.core.javabuilder</buildcommand>
          </buildcommands>
          <projectnatures>
            <projectnature>org.wso2.developerstudio.eclipse.artifact.mediator.project.nature</projectnature>
            <projectnature>org.eclipse.jdt.core.javanature</projectnature>
          </projectnatures>
        </configuration>
      </plugin>
    </plugins>
    <resources>
        <resource>
            <directory>src/main/resources/services</directory>
            <targetPath>META-INF/services</targetPath>
        </resource>
    </resources>
  </build>
  <repositories>
    <repository>
      <releases>
        <updatePolicy>daily</updatePolicy>
        <checksumPolicy>ignore</checksumPolicy>
      </releases>
      <id>wso2-nexus</id>
      <url>http://maven.wso2.org/nexus/content/groups/wso2-public/</url>
    </repository>
  </repositories>
  <pluginRepositories>
    <pluginRepository>
      <releases>
        <updatePolicy>daily</updatePolicy>
        <checksumPolicy>ignore</checksumPolicy>
      </releases>
      <id>wso2-nexus</id>
      <url>http://maven.wso2.org/nexus/content/groups/wso2-public/</url>
    </pluginRepository>
  </pluginRepositories>
  <dependencies>
    <dependency>
      <groupId>commons-httpclient.wso2</groupId>
      <artifactId>commons-httpclient</artifactId>
      <version>3.1.0.wso2v2</version>
    </dependency>
    <dependency>
      <groupId>commons-codec.wso2</groupId>
      <artifactId>commons-codec</artifactId>
      <version>1.4.0.wso2v1</version>
    </dependency>
    <dependency>
      <groupId>org.apache.synapse</groupId>
      <artifactId>synapse-core</artifactId>
      <version>2.1.0-wso2v7</version>
    </dependency>
    <dependency>
      <groupId>wsdl4j.wso2</groupId>
      <artifactId>wsdl4j</artifactId>
      <version>1.6.2.wso2v4</version>
    </dependency>
    <dependency>
      <groupId>org.apache.ws.commons.schema.wso2</groupId>
      <artifactId>XmlSchema</artifactId>
      <version>1.4.7.wso2v2</version>
    </dependency>
    <dependency>
      <groupId>org.apache.abdera.wso2</groupId>
      <artifactId>abdera</artifactId>
      <version>1.0.0.wso2v3</version>
    </dependency>
    <dependency>
      <groupId>org.apache.geronimo.specs.wso2</groupId>
      <artifactId>geronimo-stax-api_1.0_spec</artifactId>
      <version>1.0.1.wso2v2</version>
    </dependency>
    <dependency>
      <groupId>org.apache.httpcomponents.wso2</groupId>
      <artifactId>httpcore</artifactId>
      <version>4.1.0-wso2v1</version>
    </dependency>
    <dependency>
      <groupId>org.apache.neethi.wso2</groupId>
      <artifactId>neethi</artifactId>
      <version>2.0.4.wso2v4</version>
    </dependency>
    <dependency>
      <groupId>org.apache.axis2.wso2</groupId>
      <artifactId>axis2</artifactId>
      <version>1.6.1.wso2v6</version>
    </dependency>
    <dependency>
      <groupId>org.apache.woden.wso2</groupId>
      <artifactId>woden</artifactId>
      <version>1.0.0.M8-wso2v1</version>
    </dependency>
    <dependency>
      <groupId>commons-logging</groupId>
      <artifactId>commons-logging</artifactId>
      <version>1.1.1</version>
    </dependency>
    <dependency>
      <groupId>org.apache.ws.commons.axiom.wso2</groupId>
      <artifactId>axiom</artifactId>
      <version>1.2.11.wso2v3</version>
    </dependency>
    <dependency>
      <groupId>commons-io.wso2</groupId>
      <artifactId>commons-io</artifactId>
      <version>2.0.0.wso2v2</version>
    </dependency>
  </dependencies>
  <properties>
    <CApp.type>lib/synapse/mediator</CApp.type>
  </properties>
</project>

我已经做了很长一段时间的实验,改变pom文件和代码的各个方面。我已经注意到,如果省略配置的Fragment-Host部分,我可以使用类中介调用中介程序。如果存在Fragment-Host元素,则调用中介的任何方式都不起作用。

正如预期的那样,我正在使用apache构建该项目的jar文件。我要把罐子扔给<ESB_HOME>/repository/components/dropins-directory。

我尝试使用WSO2 ESB 4.5.1和4.7.0,结果完全相同。

要使自定义XML配置正常工作,必须更改哪些内容?

任何输入都将不胜感激!

附件:

压缩源在Dropbox:TestMediator.zip

使用maven在Dropbox上构建Jar:TestMediator-1.0.0.jar

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-08 03:38:25

由于WSO2 ESB本身显然存在一些错误,这导致包含中介及其工厂和序列化程序的包在其清单包含Fragment-Host定义的情况下不会被加载,因此我选择了一个稍微复杂一些的场景,以使我的中介使用自定义XML进行功能。

在使用了捆绑包中的激活器类来确认它没有加载之后,我突然意识到,我还可以使用该激活器手动注册ESB中的MediatorFactoryMediatorSerializer类。

为此,我为OSGI包编写了以下激活程序:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package test;

import java.text.MessageFormat;
import java.util.Map;

import org.apache.synapse.config.xml.MediatorFactoryFinder;
import org.apache.synapse.config.xml.MediatorSerializer;
import org.apache.synapse.config.xml.MediatorSerializerFinder;
import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;

import test.synapse.mediator.TestMediator;
import test.synapse.mediator.TestMediatorFactory;
import test.synapse.mediator.TestMediatorSerializer;

public class Activator implements BundleActivator {

    public void start(BundleContext context) throws Exception {
        {
            Map<javax.xml.namespace.QName, java.lang.Class> mediatorFactoryMap = MediatorFactoryFinder.getInstance().getFactoryMap();
            mediatorFactoryMap.put(TestMediatorFactory.QNAME, TestMediatorFactory.class);
        }
        {
            Map<String, MediatorSerializer> mediatorSerializerMap = MediatorSerializerFinder.getInstance().getSerializerMap();
            mediatorSerializerMap.put(TestMediator.class.getName(), TestMediatorSerializer.class.newInstance());
        }
    }

    public void stop(BundleContext context) throws Exception {
        // Maybe undo what was done in the start(BundleContext) method..?
        System.out.println(this.getClass().getName() + ".stop(BundleContext) called");
    }
}

显然,Activator类需要定义为包的激活器。这是通过将以下节点添加到指令元素下的pom.xml包插件配置中来实现的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<Bundle-Activator>test.Activator</Bundle-Activator>

使用这种手动注册工厂和序列化类的方式,org.apache.synapse.config.xml.MediatorFactoryorg.apache.synapse.config.xml.MediatorSerializer文件是不需要的,可以从最终的jar中删除。

此外,需要从同一个父节点中删除Fragment-Host元素,以便实际调用激活器类的start方法。

此外,还需要添加包含BundleActivator接口的osgi核心依赖项。

通过这样做,我们将得到以下完整的pom.xml文件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <modelVersion>4.0.0</modelVersion>
  <groupId>test.synapse.mediator.TestMediator</groupId>
  <artifactId>TestMediator</artifactId>
  <version>1.0.0</version>
  <packaging>bundle</packaging>
  <name>TestMediator</name>
  <description>TestMediator</description>
  <build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.0</version>
            <configuration>
                <source>1.5</source>
                <target>1.5</target>
            </configuration>
        </plugin>
        <plugin>
        <groupId>org.apache.felix</groupId>
        <artifactId>maven-bundle-plugin</artifactId>
        <version>2.3.4</version>
        <extensions>true</extensions>
        <configuration>
          <instructions>
            <Bundle-SymbolicName>TestMediator</Bundle-SymbolicName>
            <Bundle-Name>TestMediator</Bundle-Name>
            <Bundle-ClassPath>.</Bundle-ClassPath>
            <Bundle-Activator>test.Activator</Bundle-Activator>
            <Export-Package>test.synapse.mediator</Export-Package>
            <Import-Package>*; resolution:=optional</Import-Package>
            <!-- <Fragment-Host>synapse-core</Fragment-Host> -->
          </instructions>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-eclipse-plugin</artifactId>
        <version>2.9</version>
        <configuration>
          <buildcommands>
            <buildcommand>org.eclipse.jdt.core.javabuilder</buildcommand>
          </buildcommands>
          <projectnatures>
            <projectnature>org.wso2.developerstudio.eclipse.artifact.mediator.project.nature</projectnature>
            <projectnature>org.eclipse.jdt.core.javanature</projectnature>
          </projectnatures>
        </configuration>
      </plugin>
    </plugins>
  </build>
  <repositories>
    <repository>
      <releases>
        <updatePolicy>daily</updatePolicy>
        <checksumPolicy>ignore</checksumPolicy>
      </releases>
      <id>wso2-nexus</id>
      <url>http://maven.wso2.org/nexus/content/groups/wso2-public/</url>
    </repository>
  </repositories>
  <pluginRepositories>
    <pluginRepository>
      <releases>
        <updatePolicy>daily</updatePolicy>
        <checksumPolicy>ignore</checksumPolicy>
      </releases>
      <id>wso2-nexus</id>
      <url>http://maven.wso2.org/nexus/content/groups/wso2-public/</url>
    </pluginRepository>
  </pluginRepositories>
  <dependencies>
    <dependency>
      <groupId>commons-httpclient.wso2</groupId>
      <artifactId>commons-httpclient</artifactId>
      <version>3.1.0.wso2v2</version>
    </dependency>
    <dependency>
      <groupId>commons-codec.wso2</groupId>
      <artifactId>commons-codec</artifactId>
      <version>1.4.0.wso2v1</version>
    </dependency>
    <dependency>
      <groupId>org.apache.synapse</groupId>
      <artifactId>synapse-core</artifactId>
      <version>2.1.0-wso2v7</version>
    </dependency>
    <dependency>
      <groupId>wsdl4j.wso2</groupId>
      <artifactId>wsdl4j</artifactId>
      <version>1.6.2.wso2v4</version>
    </dependency>
    <dependency>
      <groupId>org.apache.ws.commons.schema.wso2</groupId>
      <artifactId>XmlSchema</artifactId>
      <version>1.4.7.wso2v2</version>
    </dependency>
    <dependency>
      <groupId>org.apache.abdera.wso2</groupId>
      <artifactId>abdera</artifactId>
      <version>1.0.0.wso2v3</version>
    </dependency>
    <dependency>
      <groupId>org.apache.geronimo.specs.wso2</groupId>
      <artifactId>geronimo-stax-api_1.0_spec</artifactId>
      <version>1.0.1.wso2v2</version>
    </dependency>
    <dependency>
      <groupId>org.apache.httpcomponents.wso2</groupId>
      <artifactId>httpcore</artifactId>
      <version>4.1.0-wso2v1</version>
    </dependency>
    <dependency>
      <groupId>org.apache.neethi.wso2</groupId>
      <artifactId>neethi</artifactId>
      <version>2.0.4.wso2v4</version>
    </dependency>
    <dependency>
      <groupId>org.apache.axis2.wso2</groupId>
      <artifactId>axis2</artifactId>
      <version>1.6.1.wso2v6</version>
    </dependency>
    <dependency>
      <groupId>org.apache.woden.wso2</groupId>
      <artifactId>woden</artifactId>
      <version>1.0.0.M8-wso2v1</version>
    </dependency>
    <dependency>
      <groupId>commons-logging</groupId>
      <artifactId>commons-logging</artifactId>
      <version>1.1.1</version>
    </dependency>
    <dependency>
      <groupId>org.apache.ws.commons.axiom.wso2</groupId>
      <artifactId>axiom</artifactId>
      <version>1.2.11.wso2v3</version>
    </dependency>
    <dependency>
      <groupId>commons-io.wso2</groupId>
      <artifactId>commons-io</artifactId>
      <version>2.0.0.wso2v2</version>
    </dependency>
    <dependency>
      <groupId>org.osgi</groupId>
      <artifactId>org.osgi.core</artifactId>
      <version>5.0.0</version>
    </dependency>
  </dependencies>
  <properties>
    <CApp.type>lib/synapse/mediator</CApp.type>
  </properties>
</project>

在完成了这些修改并将Maven构建的jar放到/存储库/components/dropins目录后,中介最终使用了它的自定义配置。

我已经压缩了完整的最终项目源代码。这个档案也可以在Dropbox:TestMediator-final.zip上找到。

编辑

经过额外的实验,很明显,上述方法在WSO2 ESB 4.5.1中不起作用,而这正是我最初试图让它工作的平台。代码按照WSO2 4.7.0中的预期执行。

无论我尝试了什么,我都无法让WSO2 ESB 4.5.1 (或4.6.0)调用激活器的start(BundleContext)方法。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18675691

复制
相关文章
Sqlserver查询数据表中的字段类型
select a.name 表名, b.name 字段名, case c.name when 'numeric' then 'numeric(' + convert(varchar,b.length) + ',' + convert(varchar,b.xscale) + ')' when 'char' then 'char(' + convert(varchar,b.length) + ')' when 'varchar' then 'varchar(' + convert(varchar,b.l
静谧的小码农
2019/04/25
4.2K0
Sqlserver查询数据表中的字段类型
MongoDB查询时排序字段为int类型和string类型的区别
平常用Mysql比较多所以在查询时自然想到ORDER BY list_order DESC,
solate
2019/07/22
1.9K0
基因突变类型
突变是指发生在遗传物质上的变异。广义上突变可以分为两类:染色体变异(chromosome aberration),即染色体数目和结构的改变;基因突变(genemutation),即基因的核苷酸顺序或数目发生改变。狭义突变通常特指基因突变,它包括单个碱基改变所引起的点突变(point mutation),或多个碱基的缺失、重复和插入。
生信交流平台
2022/09/21
1.4K0
基因突变类型
MySQL的字段类型_mysql数据库字段类型
要了解一个数据库,我们必须了解其支持的数据类型。MySQL 支持大量的字段类型,其中常用的也有很多。前面文章我们也讲过 int 及 varchar 类型的用法,但一直没有全面讲过字段类型,本篇文章我们将把字段类型一网打尽,讲一讲常用字段类型的用法。
全栈程序员站长
2022/10/04
19.5K0
MySQL的字段类型_mysql数据库字段类型
mysql float字段类型数据查询为空问题
作者:matrix 被围观: 224 次 发布时间:2021-12-28 分类:mysql PHP | 无评论 »
HHTjim 部落格
2022/09/26
5.2K0
mysql密码字段类型_MySQL 字段类型
MySQL 的数值数据类型可以大致划分为两个类别,一个是整数,另一个是浮点数或小数。
全栈程序员站长
2022/11/17
14.5K0
mysql密码字段类型_MySQL 字段类型
mysql longtext_MySql中LongText类型大字段查询优化
在本次项目表结构中,有一个longtext字段,用于存储长文本,仅万条数据,InnoDB存储文件就达G级,由于是一个小项目,受限于服务器与运维人员水平,不适合使用hdfs,MongoDB等拓展技术栈来解决这种问题,因此直接对mysql存储进行优化,快速解决,利于维护。
全栈程序员站长
2022/08/28
3.9K0
mongovue查询字段_mongodb查询速度
{“ei”:”AW4BROILANDSTART1″, //条件一 “cd”:{$elemMatch:{“0004”:{$gte:0}}},  //条件二,cd为集合 ,0004为集合中的key
全栈程序员站长
2022/09/25
2.4K0
MySQL字段类型
字符串类型指CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM和SET。该节描述了这些类型如何工作以及如何在查询中使用这些类型。
全栈程序员站长
2022/08/04
9.4K0
blob类型字段[通俗易懂]
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/16
2.9K0
临床相关突变查询数据库
越来越多的研究发现某一个基因的突变和很多的临床特征有关系。如果我们想有查找临床性状和基因突变的关系的话,内容比较全面的就是ClinVar数据库了。ClinVar 数据库是ncbi旗下用于查看临床相关突变的数据库。但是其数据库的内容比较多,而且检索界面不是很友好。所以经常看不懂其结果。所以今天就介绍一个检索简单的突变和表型的数据库。Simple ClinVar(http://simple-clinvar.broadinstitute.org/)。通过其名字我们就知道这个是一个简易版的Clinvar数据库。
医学数据库百科
2021/11/18
1K0
临床相关突变查询数据库
MongoDB-使用$type查询某个字段的类型是否为xxx
有朋友问我最近为什么都一直在更新mongodb的相关操作教程呢?因为呀,我目前的工作中需要用到呀。
小博测试成长之路
2022/12/02
1.5K0
MongoDB-使用$type查询某个字段的类型是否为xxx
oracle查看表字段类型_oracle更改表字段类型
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/10/03
1.1K0
Mysql 字段常用字段类型
特殊说明: 解决问题的光鲜,藏着磕Bug的痛苦。 万物皆入轮回,谁也躲不掉! 以上文章,均是我实际操作,写出来的笔记资料,不会出现全文盗用别人文章!烦请各位,请勿直接盗用!
收心
2022/01/25
7.9K0
MySQL字段类型的详细解释
MySQL支持大量的列类型,它可以被分为3类:数字类型、日期和时间类型以及字符串(字符)类型。 概述有意简化,更详细的说明应该考虑到有关特定列类型的附加信息,例如你能为其指定值的允许格式。 由MySQL支持的列类型列在下面。下列代码字母用于描述中:M指出最大的显示尺寸。最大的合法的显示尺寸是 255 。 D适用于浮点类型并且指出跟随在十进制小数点后的数码的数量。最大可能的值是30,但是应该不大于M-2。 方括号(“[”和“]”)指出可选的类型修饰符的部分。注意,如果你指定一个了为ZEROFILL,MySQL将为该列自动地增加UNSIGNED属性。 TINYINT[(M)] [UNSIGNED] [ZEROFILL] 一个很小的整数。有符号的范围是-128到127,无符号的范围是0到255。 SMALLINT[(M)] [UNSIGNED] [ZEROFILL] 一个小整数。有符号的范围是-32768到32767,无符号的范围是0到65535。 MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL] 一个中等大小整数。有符号的范围是-8388608到8388607,无符号的范围是0到16777215。 INT[(M)] [UNSIGNED] [ZEROFILL] 一个正常大小整数。有符号的范围是-2147483648到2147483647,无符号的范围是0到4294967295。 INTEGER[(M)] [UNSIGNED] [ZEROFILL] 这是INT的一个同义词。 BIGINT[(M)] [UNSIGNED] [ZEROFILL] 一个大整数。有符号的范围是-9223372036854775808到9223372036854775807,无符号的范围是0到 18446744073709551615。注意,所有算术运算用有符号的BIGINT或DOUBLE值完成, 因此你不应该使用大于9223372036854775807(63位)的有符号大整数,除了位函数!注意, 当两个参数是INTEGER值时,-、+和*将使用BIGINT运算!这意味着如果你乘2个大整数(或来自于返回整数的函数), 如果结果大于9223372036854775807,你可以得到意外的结果。一个浮点数字,不能是无符号的,对一个单精度浮点数, 其精度可以是<=24,对一个双精度浮点数,是在25 和53之间,这些类型如FLOAT和DOUBLE类型马上在下面描述。 FLOAT(X)有对应的FLOAT和DOUBLE相同的范围,但是显示尺寸和小数位数是未定义的。在MySQL3.23中, 这是一个真正的浮点值。 在更早的MySQL版本中,FLOAT(precision)总是有2位小数。该句法为了ODBC兼容性而提供。 FLOAT[(M,D)] [ZEROFILL] 一个小(单精密)浮点数字。 不能无符号。 允许的值是-3.402823466E+38到-1.175494351E-38,0 和1.175494351E-38到3.402823466E+38。 M是显示宽度而D是小数的位数。没有参数的FLOAT或有<24 的一个参数表示一个单精密浮点数字。 DOUBLE[(M,D)] [ZEROFILL] 一个正常大小(双精密)浮点数字。 不能无符号。 允许的值是-1.7976931348623157E+308到-2.2250738585072014E-308、 0和2.2250738585072014E-308到1.7976931348623157E+308。 M是显示宽度而D是小数位数。 没有一个参数的 DOUBLE或FLOAT(X)(25 < = X < = 53)代表一个双精密浮点数字。 DOUBLE PRECISION[(M,D)] [ZEROFILL] REAL[(M,D)] [ZEROFILL] 这些是DOUBLE同义词。 DECIMAL[(M[,D])] [ZEROFILL] 一个未压缩(unpack)的浮点数字。 不能无符号。 行为如同一个CHAR列:“未压缩”意味着数字作为一个字符串被存储,值的每一位使用一个字符。 小数点,并且对于负数,“-”符号不在M中计算。 如果D是0,值将没有小数点或小数部分。 DECIMAL值的最大范围与DOUBLE相同,但是对一个给定的 DECIMAL列, 实际的范围可以通过M和D的选择被限制。 如果D被省略,它被设置为0。如果M被省掉,它被设置为10。 注意,在MySQL3.22 里,M参数包括符号和小数点。 NUMERIC(M,D) [ZEROFILL] 这是DECIMAL的一个同义词。 DATE 一个日期。支持的范围是'1000-01-01'到'9999-12-31'。 MySQL以'YYYY-MM-DD'格式来显示DATE值, 但是允许你使用字
用户9076598
2022/03/02
2.3K0
ElasticSearch(7.2.2)-常⻅的字段类型
数据类型 核⼼数据类型 复杂数据类型 专⽤数据类型 核⼼数据类型 字符串 text:⽤于全⽂索引,该类型的字段将通过分词器进⾏分词 keyword:不分词,只能搜索该字段的完整的值 数值型 long, integer, short, byte, double, float, half_float, scaled_float 布尔 - boolean ⼆进制 - binary:该类型的字段把值当做经过 base64 编码的字符串,默认不存储,且不可搜索 范围类型 范围类型表示值是⼀个范围,⽽不是⼀个具体
cwl_java
2019/11/04
8690
mysql alter 修改字段类型_Mysql必读mysql 增加修改字段类型及删除字段类型「建议收藏」
本文介绍了MysqL必读MysqL 增加修改字段类型及删除字段类型,希望对您有用。如果有疑问,可以联系我们。
全栈程序员站长
2022/09/01
10.2K0
ElasticSearch的Mapping之字段类型
es支持大多数java里面的数据类型: (一)核心数据类型: (1)string: 默认会被分词,一个完整示例如下 Java代码 "status": { "type": "string", //字符串类型 "index": "analyzed"//分词,不分词是:not_analyzed ,设置成no,字段将不会被索引 "analyzer":"ik"//指定分词器 "boost":1.23//字段级别的分数加权
我是攻城师
2018/05/14
1.7K0
PostgreSQL查询数据库表以及每一个表里面的字段的类型,字段名称,字段意思
目录 1 查看特定表名备注 2 查看全部表名和备注 3 查询全部都表名 4 查看特定表名字段,字段类型,描述 5 查询所有表名称以及字段含义 1 查看特定表名备注 select relname as tabname, cast(obj_description(relfilenode,'pg_class') as varchar) as comment from pg_class c where relname ='user'; 2 查看全部表名和备注 就是查看public 下的全部都表名称 select
一写代码就开心
2022/10/04
3.1K0
mysql varchar类型字段为数字时,不带引号查询时查询结果与事实不符
今天出现了一个bug,在数据库中我们将订单表中的order_no从之前的bigint(20)改成varchar(20)后,原有的代码逻辑在进行时查询时,之前是以Long类型传参查询的。
翎野君
2023/05/12
1.6K0
mysql varchar类型字段为数字时,不带引号查询时查询结果与事实不符

相似问题

错误:[{消息:“无法查询字段"...”类型“突变”。您的意思是“...”吗?“,…}]

124

“突变”类型的字段上的未知参数

111

无法在“查询”类型上查询字段"allMdx“

11

无法在查询类型上注册查询字段

11

无法查询类型"y“上的字段"x”

21
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文