#macro ( property $name $type )
|
private $type $name;
|
private boolean isset_${name};
|
#end
|
#macro ( access $name $type )
|
public #javatype(${type}) get#ucf($name)() {
|
return this.$name;
|
}
|
|
public void set#ucf($name)(#javatype(${type}) ${name}) {
|
this.${name} = ${name};
|
this.isset_${name} = true;
|
}
|
|
public boolean isEmpty#ucf($name)() {
|
#if (${stringUtils.getJavaType($type)} == "String")
|
return this.${name} == null || this.${name}.length() == 0;
|
#else
|
return this.${name} == null;
|
#end
|
}
|
#end
|
#macro (join $name $type)
|
if (this.isEmpty#ucf($name)()) {
|
sbWhere.append("($name is null)");
|
} else {
|
#if(${stringUtils.getJavaType($type)} == "String")
|
sbWhere.append("($name='" + this.doFilter(this.get#ucf($name)())+ "')");
|
#else
|
sbWhere.append("($name=" + this.get#ucf($name)()+ ")");
|
#end
|
}
|
sbWhere.append(" AND ");
|
#end
|
#macro ( lower $value )${value.toLowerCase()}#end
|
#macro ( upper $value )${value.toUpperCase()}#end
|
#macro ( lcf $name )${stringUtils.toLowerCaseFirst($name)}#end
|
#macro ( ucf $name )${stringUtils.toUpperCaseFirst($name)}#end
|
#macro ( lucf $value )${stringUtils.toUpperCaseFirst(${value.toLowerCase()})}#end
|
#macro ( javatype $type )${stringUtils.getJavaType($type)}#end##
|
#############################################################################################
|
package com.iplatform.model.po;
|
|
import com.xinyuan.core.common.MisException;
|
import com.xinyuan.core.model.persistence.po.BasePo;
|
import com.xinyuan.core.model.persistence.po.SqlAndParameters;
|
import com.xinyuan.core.model.persistence.po.sqlgen.DeleteBuilder;
|
import com.xinyuan.core.model.persistence.po.sqlgen.InsertBuilder;
|
import com.xinyuan.core.model.persistence.po.sqlgen.SelectBuilder;
|
import com.xinyuan.core.model.persistence.po.sqlgen.UpdateBuilder;
|
import org.apache.commons.lang.builder.ToStringBuilder;
|
import org.apache.commons.lang.builder.ToStringStyle;
|
import org.springframework.jdbc.core.RowMapper;
|
|
import java.sql.ResultSet;
|
import java.sql.SQLException;
|
import java.util.Map;
|
|
/**
|
* 表名:${table_name}
|
*/
|
public class #ucf(${table_name}) extends BasePo<#ucf(${table_name})> {
|
// 序列化版本号
|
private static final long serialVersionUID = 1L;
|
|
public static final RowMapper<#ucf(${table_name})> ROW_MAPPER = new #ucf(${table_name})RowMapper();
|
## 主键
|
// 主键
|
private #javatype(${pk_type}) ${pk_name} = null;
|
private boolean isset_${pk_name} = false;
|
|
## 属性
|
// 属性列表
|
#foreach ($property in $columns)
|
private #javatype($property.type) ${property.name} = null;
|
private boolean isset_${property.name} = false;
|
|
#end
|
/**
|
* 默认构造函数
|
*/
|
public #lucf(${table_name})() {
|
}
|
|
/**
|
* 根据主键构造对象
|
*/
|
public #lucf(${table_name})(#javatype(${pk_type}) ${pk_name}) {
|
this.set#ucf(${pk_name})(${pk_name});
|
}
|
|
#access(${pk_name} ${pk_type})
|
|
##属性setter getter isEmpty
|
#foreach ($property in $columns)
|
#access(${property.name} ${property.type})
|
|
#end
|
|
/**
|
* 获取表名
|
*/
|
@Override
|
public String getTableName_() {
|
return "${table_name}";
|
}
|
|
/**
|
* 获取主键名称
|
*/
|
@Override
|
public String getPkName_() {
|
return "${pk_name}";
|
}
|
|
/**
|
* 获取主键值
|
*/
|
@Override
|
public Object getPkValue_() {
|
return this.${pk_name};
|
}
|
|
/**
|
* 设置主键值
|
*/
|
@Override
|
public void setPkValue(Object value) {
|
this.set#ucf(${pk_name})((#javatype(${pk_type})) value);
|
}
|
|
/**
|
* 获取插入语句和参数
|
*/
|
@Override
|
public SqlAndParameters<Map<String, Object>> getInsertSql_() {
|
InsertBuilder ib = new InsertBuilder(this.getTableName_());
|
ib.set("${pk_name}", this.${pk_name});
|
#foreach ($property in $columns)
|
ib.set("${property.name}", this.${property.name}, this.isset_${property.name});
|
#end
|
return ib.genMapSql();
|
}
|
|
/**
|
* 获取更新语句和参数
|
*/
|
@Override
|
public SqlAndParameters<Map<String, Object>> getUpdateSql_() {
|
UpdateBuilder ub = new UpdateBuilder(this.getTableName_());
|
#foreach ($property in $columns)
|
ub.set("${property.name}", this.${property.name}, this.isset_${property.name});
|
#end
|
ub.where(this.getPkName_(), this.getPkValue_());
|
return ub.genMapSql();
|
}
|
|
/**
|
* 获取更新语句和参数
|
*/
|
@Override
|
public SqlAndParameters<Map<String, Object>> getUpdateSql_(String where, Map<String, Object> parameters) {
|
UpdateBuilder ub = new UpdateBuilder(this.getTableName_());
|
#foreach ($property in $columns)
|
ub.set("${property.name}", this.${property.name}, this.isset_${property.name});
|
#end
|
|
return ub.genMapSql(where, parameters);
|
}
|
|
/**
|
* 获取更新语句和参数
|
*/
|
@Override
|
public SqlAndParameters<Object[]> getUpdateSql_(String where, Object[] parameters) {
|
UpdateBuilder ub = new UpdateBuilder(this.getTableName_());
|
#foreach ($property in $columns)
|
ub.set("${property.name}", this.${property.name}, this.isset_${property.name});
|
#end
|
|
return ub.genArraySql(where, parameters);
|
}
|
|
/**
|
* 获取删除语句和参数
|
*/
|
@Override
|
public SqlAndParameters<Map<String, Object>> getDeleteSql_() {
|
DeleteBuilder db = new DeleteBuilder(this.getTableName_());
|
db.where(this.getPkName_(), this.getPkValue_());
|
return db.genMapSql();
|
}
|
|
/**
|
* 获取删除语句和参数
|
*/
|
@Override
|
public SqlAndParameters<Map<String, Object>> getDeleteSql_(String where, Map<String, Object> parameters) {
|
DeleteBuilder db = new DeleteBuilder(this.getTableName_());
|
return db.genMapSql(where, parameters);
|
}
|
|
/**
|
* 获取删除语句和参数
|
*/
|
@Override
|
public SqlAndParameters<Object[]> getDeleteSql_(String where, Object[] parameters) {
|
DeleteBuilder db = new DeleteBuilder(this.getTableName_());
|
return db.genArraySql(where, parameters);
|
}
|
|
/**
|
* 获取单行查询语句和参数
|
*/
|
@Override
|
public SqlAndParameters<Map<String, Object>> getSingleSql_() {
|
SelectBuilder sb = new SelectBuilder(this.getTableName_());
|
sb.where(this.getPkName_(), this.getPkValue_());
|
return sb.genMapSql();
|
}
|
|
#set($fields="${pk_name}")
|
#foreach ($property in $columns)
|
#set($fields = $fields.concat(", ").concat(${property.name}))
|
#end
|
|
/**
|
* 获取查询语句和参数
|
*/
|
@Override
|
public SqlAndParameters<Map<String, Object>> getSelectSql_(String where, Map<String, Object> parameters) {
|
return new SqlAndParameters<>("select $fields from " + this.getTableName_() + " " + where, parameters);
|
}
|
|
/**
|
* 获取查询语句和参数
|
*/
|
@Override
|
public SqlAndParameters<Object[]> getSelectSql_(String where, Object[] parameters) {
|
return new SqlAndParameters<>("select $fields from " + this.getTableName_() + " " + where, parameters);
|
}
|
|
/**
|
* 将resultset的一行转化为po
|
*/
|
@Override
|
public #lucf(${table_name}) mapRow(ResultSet rs, int i) throws SQLException {
|
return ROW_MAPPER.mapRow(rs, i);
|
}
|
|
/**
|
* 重写 toString() 方法
|
*/
|
public String toString() {
|
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
|
.append("${pk_name}", this.${pk_name})
|
#foreach ($property in $columns)
|
.append("${property.name}", this.${property.name})
|
#end
|
.toString();
|
}
|
|
/**
|
* 克隆
|
*/
|
@Override
|
public #lucf($table_name) clone() {
|
try {
|
#lucf($table_name) #lower($table_name) = (#lucf(${table_name})) super.clone();
|
//主键
|
if (this.isset_${pk_name}) {
|
#lower($table_name).set#ucf(${pk_name})(this.get#ucf(${pk_name})());
|
}
|
//普通属性
|
#foreach ($property in $columns)
|
if (this.isset_${property.name}) {
|
#lower($table_name).set#ucf($property.name)(this.get#ucf($property.name)());
|
}
|
#end
|
return #lower($table_name);
|
} catch (Exception e) {
|
throw new MisException(e);
|
}
|
}
|
}
|
|
class #lucf($table_name)RowMapper implements RowMapper<#lucf($table_name)> {
|
|
@Override
|
public #lucf($table_name) mapRow(ResultSet rs, int i) throws SQLException {
|
#lucf($table_name) #lower($table_name) = new #lucf(${table_name})();
|
Integer columnIndex = null;
|
//主键
|
columnIndex = #lower($table_name).findColumn(rs, "${pk_name}");
|
if (columnIndex > 0) {
|
#if(${stringUtils.getJavaType($pk_type)} == "String")
|
#lower($table_name).set#ucf(${pk_name})(rs.getString(columnIndex));
|
#end
|
#if(${stringUtils.getJavaType($pk_type)} == "Integer")
|
#lower($table_name).set#ucf(${pk_name})(rs.getInt(columnIndex));
|
#end
|
#if(${stringUtils.getJavaType($pk_type)} == "Long")
|
#lower($table_name).set#ucf(${pk_name})(rs.getLong(columnIndex));
|
#end
|
#if(${stringUtils.getJavaType($pk_type)} == "Float")
|
#lower($table_name).set#ucf(${pk_name})(rs.getFloat(columnIndex));
|
#end
|
#if(${stringUtils.getJavaType($pk_type)} == "Double")
|
#lower($table_name).set#ucf(${pk_name})(rs.getDouble(columnIndex));
|
#end
|
#if(${stringUtils.getJavaType($pk_type)} == "java.math.BigDecimal")
|
#lower($table_name).set#ucf(${pk_name})(rs.getBigDecimal(columnIndex));
|
#end
|
#if(${stringUtils.getJavaType($pk_type)} == "java.util.Date")
|
#lower($table_name).set#ucf(${pk_name})(rs.getDate(columnIndex));
|
#end
|
}
|
//普通属性
|
#foreach ($property in $columns)
|
columnIndex = #lower($table_name).findColumn(rs, "${property.name}");
|
if (columnIndex > 0) {
|
#if(${stringUtils.getJavaType($property.type)} == "String")
|
#lower($table_name).set#ucf($property.name)(rs.getString(columnIndex));
|
#end
|
#if(${stringUtils.getJavaType($property.type)} == "Integer")
|
if (rs.getBigDecimal(columnIndex) == null) {
|
#lower($table_name).set#ucf($property.name)(null);
|
} else {
|
#lower($table_name).set#ucf($property.name)(rs.getInt(columnIndex));
|
}
|
#end
|
#if(${stringUtils.getJavaType($property.type)} == "Long")
|
if (rs.getBigDecimal(columnIndex) == null) {
|
#lower($table_name).set#ucf($property.name)(null);
|
} else {
|
#lower($table_name).set#ucf($property.name)(rs.getLong(columnIndex));
|
}
|
#end
|
#if(${stringUtils.getJavaType($property.type)} == "Float")
|
if (rs.getBigDecimal(columnIndex) == null) {
|
#lower($table_name).set#ucf($property.name)(null);
|
} else {
|
#lower($table_name).set#ucf($property.name)(rs.getFloat(columnIndex));
|
}
|
#end
|
#if(${stringUtils.getJavaType($property.type)} == "Double")
|
if (rs.getBigDecimal(columnIndex) == null) {
|
#lower($table_name).set#ucf($property.name)(null);
|
} else {
|
#lower($table_name).set#ucf($property.name)(rs.getDouble(columnIndex));
|
}
|
#end
|
#if(${stringUtils.getJavaType($property.type)} == "java.math.BigDecimal")
|
#lower($table_name).set#ucf($property.name)(rs.getBigDecimal(columnIndex));
|
#end
|
#if(${stringUtils.getJavaType($property.type)} == "byte[]")
|
#lower($table_name).set#ucf($property.name)(rs.getBytes(columnIndex));
|
#end
|
#if(${stringUtils.getJavaType($property.type)} == "java.util.Date")
|
#lower($table_name).set#ucf($property.name)(rs.getDate(columnIndex));
|
#end
|
}
|
#end
|
return #lower($table_name);
|
}
|
}
|