mybatis转换成java类_mybatis generator 生成javabean自定义类型转换

因为默认mybatis generator自动生成的,带小数的都转成了bigdecimal了,而且长度不同的整数转成了不同的类型。

但是我想要带小数的转成double,整数转成integer。

所有自定义类型转换

代码如下:

/*

* Copyright 2005 The Apache Software Foundation

*

* Licensed under the Apache License, Version 2.0 (the "License");

* you may not use this file except in compliance with the License.

* You may obtain a copy of the License at

*

* http://www.apache.org/licenses/LICENSE-2.0

*

* Unless required by applicable law or agreed to in writing, software

* distributed under the License is distributed on an "AS IS" BASIS,

* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

* See the License for the specific language governing permissions and

* limitations under the License.

*/

package org.mybatis.generator.internal.types;

import java.math.BigDecimal;

import java.sql.Types;

import java.util.Date;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

import java.util.Properties;

import org.mybatis.generator.api.IntrospectedColumn;

import org.mybatis.generator.api.JavaTypeResolver;

import org.mybatis.generator.api.dom.java.FullyQualifiedJavaType;

import org.mybatis.generator.config.Context;

import org.mybatis.generator.config.PropertyRegistry;

import org.mybatis.generator.internal.util.StringUtility;

/**

*

* @author Jeff Butler

*/

public class MyJavaTypeResolver implements JavaTypeResolver {

protected List warnings;

protected Properties properties;

protected Context context;

protected boolean forceBigDecimals;

protected Map typeMap;

public MyJavaTypeResolver() {

super();

properties = new Properties();

typeMap = new HashMap();

typeMap.put(Types.ARRAY, new JdbcTypeInformation("ARRAY", //$NON-NLS-1$

new FullyQualifiedJavaType(Object.class.getName())));

typeMap.put(Types.BIGINT, new JdbcTypeInformation("BIGINT", //$NON-NLS-1$

new FullyQualifiedJavaType(Long.class.getName())));

typeMap.put(Types.BINARY, new JdbcTypeInformation("BINARY", //$NON-NLS-1$

new FullyQualifiedJavaType("byte[]"))); //$NON-NLS-1$

typeMap.put(Types.BIT, new JdbcTypeInformation("BIT", //$NON-NLS-1$

new FullyQualifiedJavaType(Boolean.class.getName())));

typeMap.put(Types.BLOB, new JdbcTypeInformation("BLOB", //$NON-NLS-1$

new FullyQualifiedJavaType("byte[]"))); //$NON-NLS-1$

typeMap.put(Types.BOOLEAN, new JdbcTypeInformation("BOOLEAN", //$NON-NLS-1$

new FullyQualifiedJavaType(Boolean.class.getName())));

typeMap.put(Types.CHAR, new JdbcTypeInformation("CHAR", //$NON-NLS-1$

new FullyQualifiedJavaType(String.class.getName())));

typeMap.put(Types.CLOB, new JdbcTypeInformation("CLOB", //$NON-NLS-1$

new FullyQualifiedJavaType(String.class.getName())));

typeMap.put(Types.DATALINK, new JdbcTypeInformation("DATALINK", //$NON-NLS-1$

new FullyQualifiedJavaType(Object.class.getName())));

typeMap.put(Types.DATE, new JdbcTypeInformation("DATE", //$NON-NLS-1$

new FullyQualifiedJavaType(Date.class.getName())));

typeMap.put(Types.DISTINCT, new JdbcTypeInformation("DISTINCT", //$NON-NLS-1$

new FullyQualifiedJavaType(Object.class.getName())));

typeMap.put(Types.DOUBLE, new JdbcTypeInformation("DOUBLE", //$NON-NLS-1$

new FullyQualifiedJavaType(Double.class.getName())));

typeMap.put(Types.FLOAT, new JdbcTypeInformation("FLOAT", //$NON-NLS-1$

new FullyQualifiedJavaType(Double.class.getName())));

typeMap.put(Types.INTEGER, new JdbcTypeInformation("INTEGER", //$NON-NLS-1$

new FullyQualifiedJavaType(Integer.class.getName())));

typeMap.put(Types.JAVA_OBJECT, new JdbcTypeInformation("JAVA_OBJECT", //$NON-NLS-1$

new FullyQualifiedJavaType(Object.class.getName())));

typeMap.put(Types.LONGNVARCHAR, new JdbcTypeInformation("LONGNVARCHAR", //$NON-NLS-1$

new FullyQualifiedJavaType(String.class.getName())));

typeMap.put(Types.LONGVARBINARY, new JdbcTypeInformation(

"LONGVARBINARY", //$NON-NLS-1$

new FullyQualifiedJavaType("byte[]"))); //$NON-NLS-1$

typeMap.put(Types.LONGVARCHAR, new JdbcTypeInformation("LONGVARCHAR", //$NON-NLS-1$

new FullyQualifiedJavaType(String.class.getName())));

typeMap.put(Types.NCHAR, new JdbcTypeInformation("NCHAR", //$NON-NLS-1$

new FullyQualifiedJavaType(String.class.getName())));

typeMap.put(Types.NCLOB, new JdbcTypeInformation("NCLOB", //$NON-NLS-1$

new FullyQualifiedJavaType(String.class.getName())));

typeMap.put(Types.NVARCHAR, new JdbcTypeInformation("NVARCHAR", //$NON-NLS-1$

new FullyQualifiedJavaType(String.class.getName())));

typeMap.put(Types.NULL, new JdbcTypeInformation("NULL", //$NON-NLS-1$

new FullyQualifiedJavaType(Object.class.getName())));

typeMap.put(Types.OTHER, new JdbcTypeInformation("OTHER", //$NON-NLS-1$

new FullyQualifiedJavaType(Object.class.getName())));

typeMap.put(Types.REAL, new JdbcTypeInformation("REAL", //$NON-NLS-1$

new FullyQualifiedJavaType(Float.class.getName())));

typeMap.put(Types.REF, new JdbcTypeInformation("REF", //$NON-NLS-1$

new FullyQualifiedJavaType(Object.class.getName())));

typeMap.put(Types.SMALLINT, new JdbcTypeInformation("SMALLINT", //$NON-NLS-1$

new FullyQualifiedJavaType(Short.class.getName())));

typeMap.put(Types.STRUCT, new JdbcTypeInformation("STRUCT", //$NON-NLS-1$

new FullyQualifiedJavaType(Object.class.getName())));

typeMap.put(Types.TIME, new JdbcTypeInformation("TIME", //$NON-NLS-1$

new FullyQualifiedJavaType(Date.class.getName())));

typeMap.put(Types.TIMESTAMP, new JdbcTypeInformation("TIMESTAMP", //$NON-NLS-1$

new FullyQualifiedJavaType(Date.class.getName())));

typeMap.put(Types.TINYINT, new JdbcTypeInformation("TINYINT", //$NON-NLS-1$

new FullyQualifiedJavaType(Byte.class.getName())));

typeMap.put(Types.VARBINARY, new JdbcTypeInformation("VARBINARY", //$NON-NLS-1$

new FullyQualifiedJavaType("byte[]"))); //$NON-NLS-1$

typeMap.put(Types.VARCHAR, new JdbcTypeInformation("VARCHAR", //$NON-NLS-1$

new FullyQualifiedJavaType(String.class.getName())));

}

public void addConfigurationProperties(Properties properties) {

this.properties.putAll(properties);

forceBigDecimals = StringUtility

.isTrue(properties

.getProperty(PropertyRegistry.TYPE_RESOLVER_FORCE_BIG_DECIMALS));

}

public FullyQualifiedJavaType calculateJavaType(

IntrospectedColumn introspectedColumn) {

// TODO Auto-generated method stub

FullyQualifiedJavaType answer;

JdbcTypeInformation jdbcTypeInformation = typeMap

.get(introspectedColumn.getJdbcType());

if (jdbcTypeInformation == null) {

switch (introspectedColumn.getJdbcType()) {

case Types.DECIMAL:

case Types.NUMERIC:

if(introspectedColumn.getScale() > 0)

{//如果包含小数点则转换成float

answer = new FullyQualifiedJavaType(Double.class.getName());

}else{

if ( introspectedColumn.getLength() > 18

|| forceBigDecimals) {

answer = new FullyQualifiedJavaType(Integer.class

.getName());

} else if (introspectedColumn.getLength() > 9) {

answer = new FullyQualifiedJavaType(Integer.class.getName());

} else if (introspectedColumn.getLength() > 4) {

answer = new FullyQualifiedJavaType(Integer.class.getName());

} else {

answer = new FullyQualifiedJavaType(Integer.class.getName());

}

}

break;

default:

answer = null;

break;

}

} else {

answer = jdbcTypeInformation.getFullyQualifiedJavaType();

}

return answer;

}

// public FullyQualifiedJavaType calculateJavaType(

// IntrospectedColumn introspectedColumn) {

// FullyQualifiedJavaType answer;

// JdbcTypeInformation jdbcTypeInformation = typeMap

// .get(introspectedColumn.getJdbcType());

//

// if (jdbcTypeInformation == null) {

// switch (introspectedColumn.getJdbcType()) {

// case Types.DECIMAL:

// case Types.NUMERIC:

// if (introspectedColumn.getScale() > 0

// || introspectedColumn.getLength() > 18

// || forceBigDecimals) {

// answer = new FullyQualifiedJavaType(BigDecimal.class

// .getName());

// } else if (introspectedColumn.getLength() > 9) {

// answer = new FullyQualifiedJavaType(Long.class.getName());

// } else if (introspectedColumn.getLength() > 4) {

// answer = new FullyQualifiedJavaType(Integer.class.getName());

// } else {

// answer = new FullyQualifiedJavaType(Short.class.getName());

// }

// break;

//

// default:

// answer = null;

// break;

// }

// } else {

// answer = jdbcTypeInformation.getFullyQualifiedJavaType();

// }

//

// return answer;

// }

public String calculateJdbcTypeName(IntrospectedColumn introspectedColumn) {

String answer;

JdbcTypeInformation jdbcTypeInformation = typeMap

.get(introspectedColumn.getJdbcType());

if (jdbcTypeInformation == null) {

switch (introspectedColumn.getJdbcType()) {

case Types.DECIMAL:

answer = "DECIMAL"; //$NON-NLS-1$

break;

case Types.NUMERIC:

answer = "NUMERIC"; //$NON-NLS-1$

break;

default:

answer = null;

break;

}

} else {

answer = jdbcTypeInformation.getJdbcTypeName();

}

return answer;

}

public void setWarnings(List warnings) {

this.warnings = warnings;

}

public void setContext(Context context) {

this.context = context;

}

public static class JdbcTypeInformation {

private String jdbcTypeName;

private FullyQualifiedJavaType fullyQualifiedJavaType;

public JdbcTypeInformation(String jdbcTypeName,

FullyQualifiedJavaType fullyQualifiedJavaType) {

this.jdbcTypeName = jdbcTypeName;

this.fullyQualifiedJavaType = fullyQualifiedJavaType;

}

public String getJdbcTypeName() {

return jdbcTypeName;

}

public FullyQualifiedJavaType getFullyQualifiedJavaType() {

return fullyQualifiedJavaType;

}

}

}

将这个文件,编译后放到org.mybatis.generator.interal.types目录下

MyJavaTypeResolver.class

MyJavaTypeResolver$JdbcTypeInformation.class

这两个class文件都要放

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值