package com.demo.common;
/**
* SQL生成工具
* @author 陈双
*
*/
public class SQLHeper {
/**
* 生成insert SQL
* @param mapping
* @return
*/
public static String generateInsertSql(EntityMapping mapping) {
StringBuffer sql = new StringBuffer("<script>insert into "+mapping.getTable());
sql.append("\r\n");
sql.append("<trim prefix='(' suffix=')' suffixOverrides=',' >");
sql.append("\r\n");
for (int i =0;i<mapping.getPropertyMappings().size();i++) {
PropertyMapping property = mapping.getPropertyMappings().get(i);
sql.append("<if test='"+property.getProperty() +"!= null'>");
sql.append("\r\n");
sql.append(property.getColumn());
if (i < mapping.getPropertyMappings().size()-1) {
sql.append(",");
}
sql.append("\r\n");
sql.append("</if>");
}
sql.append("\r\n");
sql.append("</trim>");
sql.append("\r\n");
sql.append("<trim prefix='values (' suffix=')' suffixOverrides=',' >");
sql.append("\r\n");
for (int i =0;i<mapping.getPropertyMappings().size();i++) {
PropertyMapping property = mapping.getPropertyMappings().get(i);
sql.append("<if test='"+property.getProperty() +"!= null'>");
sql.append("\r\n");
sql.append("#{");
sql.append(property.getProperty());
sql.append("}");
if (i < mapping.getPropertyMappings().size()-1) {
sql.append(",");
}
sql.append("\r\n");
sql.append("</if>");
}
sql.append("\r\n");
sql.append("</trim></script>");
return sql.toString();
}
/**
* 生成insertList SQL
* @param mapping
* @return
*/
public static String generateInsertListSql(EntityMapping mapping) {
StringBuffer sql = new StringBuffer("<script>insert into "+mapping.getTable());
sql.append("(");
for (int i=0;i<mapping.getPropertyMappings().size();i++) {
PropertyMapping property = mapping.getPropertyMappings().get(i);
sql.append(property.getColumn());
if (i < mapping.getPropertyMappings().size()-1) {
sql.append(",");
}
}
sql.append(") values");
sql.append("\r\n");
sql.append("<foreach collection='entityList' item='entity' separator=','>");
sql.append("\r\n");
sql.append("(");
for (int i=0;i<mapping.getPropertyMappings().size();i++) {
PropertyMapping property = mapping.getPropertyMappings().get(i);
sql.append("\r\n");
sql.append("#{entity.");
sql.append(property.getProperty());
sql.append("}");
if (i < mapping.getPropertyMappings().size()-1) {
sql.append(",");
}
}
sql.append("\r\n");
sql.append(")");
sql.append("\r\n");
sql.append("</foreach></script>");
return sql.toString();
}
/**
* 生成update SQL
* @param mapping
* @return
*/
public static String generateUpdateSql(EntityMapping mapping) {
StringBuffer sql = new StringBuffer("<script>update ");
sql.append(mapping.getTable());
sql.append("\r\n");
sql.append("<trim suffixOverrides=',' >");
sql.append("\r\n");
sql.append("<set>");
for (int i=0;i<mapping.getPropertyMappings().size();i++) {
PropertyMapping property = mapping.getPropertyMappings().get(i);
if (property.getProperty().equals("id")) {
continue;
}
sql.append("\r\n");
sql.append("<if test='"+property.getProperty()+" != null'>");
sql.append("\r\n");
sql.append(property.getColumn());
sql.append("=#{");
sql.append(property.getProperty());
sql.append("}");
if (i < mapping.getPropertyMappings().size()-1) {
sql.append(",");
}
sql.append("\r\n");
sql.append("</if>");
}
sql.append("\r\n");
sql.append("</set>");
sql.append("\r\n");
sql.append("</trim>");
sql.append("\r\n");
sql.append("where id_=#{id}</script>");
return sql.toString();
}
/**
* 生成updateByMap SQL
* @param mapping
* @return
*/
public static String generateUpdateByMapSql(EntityMapping mapping) {
StringBuffer sql = new StringBuffer("<script>update ");
sql.append(mapping.getTable());
sql.append("\r\n");
sql.append("<trim suffixOverrides=',' >");
sql.append("\r\n");
sql.append("<set>");
for (int i=0;i<mapping.getPropertyMappings().size();i++) {
PropertyMapping property = mapping.getPropertyMappings().get(i);
if (property.getProperty().equals("id")) {
continue;
}
sql.append("\r\n");
sql.append("<if test='entity."+property.getProperty()+" != null'>");
sql.append("\r\n");
sql.append(property.getColumn());
sql.append("=#{entity.");
sql.append(property.getProperty());
sql.append("}");
if (i < mapping.getPropertyMappings().size()-1) {
sql.append(",");
}
sql.append("\r\n");
sql.append("</if>");
}
sql.append("\r\n");
sql.append("</set>");
sql.append("\r\n");
sql.append("</trim>");
sql.append("\r\n");
sql.append("where 1=1 ");
for (int i=0;i<mapping.getPropertyMappings().size();i++) {
PropertyMapping property = mapping.getPropertyMappings().get(i);
sql.append("\r\n");
sql.append("<if test='condition."+property.getProperty()+" != null'>");
sql.append("\r\n");
sql.append(" and ");
sql.append(property.getColumn());
sql.append("=#{condition.");
sql.append(property.getProperty());
sql.append("}");
sql.append("\r\n");
sql.append("</if>");
}
sql.append("\r\n");
sql.append("</script>");
return sql.toString();
}
/**
* 生成getById SQL
* @param mapping
* @return
*/
public static String generateGetByIdSql(EntityMapping mapping) {
StringBuffer sql = new StringBuffer("select ");
for (int i=0;i<mapping.getPropertyMappings().size();i++) {
PropertyMapping property = mapping.getPropertyMappings().get(i);
sql.append(property.getColumn());
if (i < mapping.getPropertyMappings().size()-1) {
sql.append(",");
}
}
sql.append(" from ");
sql.append(mapping.getTable());
sql.append(" where id_=#{id}");
return sql.toString();
}
/**
* 生成get SQL
* @param mapping
* @return
*/
public static String generateGetSql(EntityMapping mapping) {
StringBuffer sql = new StringBuffer("<script>select ");
for (int i=0;i<mapping.getPropertyMappings().size();i++) {
PropertyMapping property = mapping.getPropertyMappings().get(i);
sql.append(property.getColumn());
if (i < mapping.getPropertyMappings().size()-1) {
sql.append(",");
}
}
sql.append(" from ");
sql.append(mapping.getTable());
sql.append(" where 1=1 ");
for (int i=0;i<mapping.getPropertyMappings().size();i++) {
PropertyMapping property = mapping.getPropertyMappings().get(i);
sql.append("\r\n");
sql.append("<if test='"+property.getProperty()+" != null'>");
sql.append("\r\n");
sql.append(" and ");
sql.append(property.getColumn());
sql.append("=#{");
sql.append(property.getProperty());
sql.append("}");
sql.append("\r\n");
sql.append("</if>");
}
sql.append("\r\n");
sql.append("</script>");
return sql.toString();
}
/**
* 生成getList SQL
* @param mapping
* @return
*/
public static