自动生成代码工具 字符串工具类

                                  自动生成代码工具 字符串工具类

import org.apache.commons.lang.StringUtils;

import com.ijwt.exception.JavaTypeException;
import com.ijwt.exception.MybatisTypeException;

/**
 * @author InJavaWeTrust
 */
public enum UtilString {
	
	INSTANCE;
	
	/**
	 * 首字母大写
	 * @param str
	 * @return
	 */
	public String capitalize(String str) {
		return StringUtils.capitalize(str);
	}
	
	/**
	 * 将列名转换成java类属性名称</br>
	 * 如果表中列名有下划线,则去掉下划线,且下划线后首字母大写其他字母小写(驼峰式声明变量)
	 * @param columnName 表中列名
	 * @return java类属性名
	 */
	public String columnNameToJavaName(String columnName) {
		if (columnName == null) {
			return null;
		}
		StringBuilder fieldName = new StringBuilder();
		boolean toUpper = false;
		for (int i = 0; i < columnName.length(); i++) {
			char ch = columnName.charAt(i);
			if (ch == '_') {
				toUpper = true;
			} else if (toUpper) {
				fieldName.append(Character.toUpperCase(ch));
				toUpper = false;
			} else {
				fieldName.append(Character.toLowerCase(ch));
			}
		}
		return fieldName.toString();
	}
	
	/**
	 * 将数据库表中列类型转换成java变量类型
	 * @param columnType 数据库类型
	 * @return java类型
	 * @throws JavaTypeException 
	 */
	public String columnTypeToJavaType(String columnType) throws JavaTypeException {
		String javaType = "";
		switch (columnType) {
		case "BIT":          javaType = "Boolean"; break;
		case "BIGINT":       javaType = "java.math.BigInteger"; break;
		case "BLOB":         javaType = "byte[]"; break;
		case "CHAR":         javaType = "String"; break;
		case "DATE":         javaType = "java.util.Date"; break;
		case "DATETIME":     javaType = "java.util.Date"; break;
		case "DECIMAL":      javaType = "java.math.BigDecimal"; break;
		case "DOUBLE":       javaType = "Double"; break;
		case "FLOAT":        javaType = "Float"; break;
		case "INT":          javaType = "Integer"; break;
		case "INT UNSIGNED": javaType = "Integer"; break;
		case "LONGBLOB":     javaType = "byte[]"; break;
		case "LONGTEXT":     javaType = "byte[]"; break;
		case "MEDIUMBLOB":   javaType = "byte[]"; break;
		case "MEDIUMTEXT":   javaType = "byte[]"; break;
		case "MEDIUMINT":    javaType = "Integer"; break;
		case "SMALLINT":     javaType = "Integer"; break;
		case "TEXT":         javaType = "String"; break;
		case "TINYBLOB":     javaType = "byte[]"; break;
		case "TINYTEXT":     javaType = "byte[]"; break;
		case "TIME":         javaType = "java.util.Date"; break;
		case "TIMESTAMP":    javaType = "java.util.Date"; break;
		case "TINYINT":      javaType = "Integer"; break;
		case "VARBINARY":    javaType = "byte[]"; break;
		case "VARCHAR":      javaType = "String"; break;
		case "YEAR":         javaType = "String"; break;
		default: javaType = null;
		}
		if (javaType == null) {
			throw new JavaTypeException("java类型转换异常,未知的数据库字段类型 [" + columnType + "]");
		}
		return javaType;
	}
	
	/**
	 * 将MySQL数据库类型转换成MyBatis配置文件中jdbcType类型
	 * @param sqlTypeName 数据库类型
	 * @return MyBatis配置文件jdbcType类型
	 * @throws MybatisTypeException 
	 */
	public String mySqlTypeToJdbcType(String mySqlType) throws MybatisTypeException {
		String jdbcType = "";
		switch (mySqlType) {
		case "BIT":          jdbcType = "BIT"; break;
		case "BIGINT":       jdbcType = "BIGINT"; break;
		case "BLOB":         jdbcType = "BLOB"; break;
		case "CHAR":         jdbcType = "CHAR"; break;
		case "DATE":         jdbcType = "TIMESTAMP"; break;
		case "DATETIME":     jdbcType = "TIMESTAMP"; break;
		case "DECIMAL":      jdbcType = "DECIMAL"; break;
		case "DOUBLE":       jdbcType = "DOUBLE"; break;
		case "FLOAT":        jdbcType = "FLOAT"; break;
		case "INT":          jdbcType = "INTEGER"; break;
		case "INT UNSIGNED": jdbcType = "INTEGER"; break;
		case "LONGBLOB":     jdbcType = "BLOB"; break;
		case "LONGTEXT":     jdbcType = "BLOB"; break;
		case "MEDIUMBLOB":   jdbcType = "BLOB"; break;
		case "MEDIUMTEXT":   jdbcType = "BLOB"; break;
		case "MEDIUMINT":    jdbcType = "INTEGER"; break;
		case "SMALLINT":     jdbcType = "SMALLINT"; break;
		case "TEXT":         jdbcType = "VARCHAR"; break;
		case "TINYBLOB":     jdbcType = "BLOB"; break;
		case "TINYTEXT":     jdbcType = "BLOB"; break;
		case "TIME":         jdbcType = "TIMESTAMP"; break;
		case "TIMESTAMP":    jdbcType = "TIMESTAMP"; break;
		case "TINYINT":      jdbcType = "TINYINT"; break;
		case "VARBINARY":    jdbcType = "BLOB"; break;
		case "VARCHAR":      jdbcType = "VARCHAR"; break;
		case "YEAR":         jdbcType = "VARCHAR"; break;
		default: jdbcType = null;
		}
		if (jdbcType == null) {
			throw new MybatisTypeException("mybatis类型转换异常,未知的数据库字段类型 [" + mySqlType + "]");
		}
		return jdbcType;
	}
	
}

 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值