package cn.org.rapid_framework.generator.provider.db.sql.model;
import cn.org.rapid_framework.generator.provider.db.table.model.Column;
import cn.org.rapid_framework.generator.util.StringHelper;
import cn.org.rapid_framework.generator.util.typemapping.JavaPrimitiveTypeMapping;
public class SqlParameter extends Column {
String parameterClass;
// int parameterMode;
// int parameterType;
// String parameterTypeName;
// int precision; //no use
// int scale; //no use
String paramName;
boolean isListParam = false;
public SqlParameter() {}
public SqlParameter(Column param) {
super(param);
}
public SqlParameter(SqlParameter param) {
super(param);
this.isListParam = param.isListParam;
this.paramName = param.paramName;
// this.parameterClassName = param.parameterClassName;
// this.parameterMode = param.parameterMode;
// this.parameterType = param.parameterType;
// this.parameterTypeName = param.parameterTypeName;
// this.precision = param.precision;
// this.scale = param.scale;
}
// public SqlParameter(ParameterMetaData m,int i) throws SQLException {
// this.parameterClassName = m.getParameterClassName(i);
// this.parameterMode = m.getParameterMode(i);
// this.parameterType = m.getParameterType(i);
// this.parameterTypeName = m.getParameterTypeName(i);
// this.precision = m.getPrecision(i);
// this.scale = m.getScale(i);
// }
public String getParameterClass() {
if(StringHelper.isNotBlank(parameterClass)) return parameterClass;
return getSimpleJavaType();
}
public String getPrimitiveParameterClass() {
if(StringHelper.isNotBlank(parameterClass)) return JavaPrimitiveTypeMapping.getPrimitiveType(parameterClass);
return getPrimitiveJavaType();
}
public void setParameterClass(String parameterClass) {
this.parameterClass = parameterClass;
}
public String getPreferredParameterJavaType() {
return toListParam(getParameterClass());
}
public String getPreferredPrimitiveParameterJavaType() {
return toListParam(getPrimitiveParameterClass());
}
private String toListParam(String parameterClassName) {
if(isListParam) {
if(parameterClassName.indexOf("[]") >= 0){
return parameterClassName;
}
if(parameterClassName.indexOf("List") >= 0){
return parameterClassName;
}
if(parameterClassName.indexOf("Set") >= 0){
return parameterClassName;
}
return "java.util.List<"+parameterClassName+">";
}else {
return parameterClassName;
}
}
// public int getParameterMode() {
// return parameterMode;
// }
// public void setParameterMode(int parameterMode) {
// this.parameterMode = parameterMode;
// }
// public int getParameterType() {
// return parameterType;
// }
// public void setParameterType(int parameterType) {
// this.parameterType = parameterType;
// }
// public String getParameterTypeName() {
// return parameterTypeName;
// }
// public void setParameterTypeName(String parameterTypeName) {
// this.parameterTypeName = parameterTypeName;
// }
// public int getPrecision() {
// return precision;
// }
// public void setPrecision(int precision) {
// this.precision = precision;
// }
// public int getScale() {
// return scale;
// }
// public void setScale(int scale) {
// this.scale = scale;
// }
/**
* 参数名称
*/
public String getParamName() {
return paramName;
}
public void setParamName(String paramName) {
this.paramName = paramName;
}
/**
* 是否是列表参数,主要是in语句,如 username in (:usernames) 则为true, username = :username则false
* @return
*/
public boolean isListParam() {
return isListParam;
}
public void setListParam(boolean isListParam) {
this.isListParam = isListParam;
}
public boolean equals(Object obj) {
if(obj == this) return true;
if(obj == null) return false;
if(obj instanceof SqlParameter) {
SqlParameter other = (SqlParameter)obj;
return paramName.equals(other.getParamName());
}else {
return false;
}
}
public int hashCode() {
return paramName.hashCode();
}
public String toString() {
return "paramName:"+paramName+" preferredParameterJavaType:"+getPreferredParameterJavaType();
}
}