一、StringBuilder拼接和SQL拼接
1、StringBuilder拼接
public static void main(String[] args) {
String dateStr = "123";
StringBuilder sb = new StringBuilder();
sb.append(" SELECT DISTINCT SUBSTR( VALUE, INSTR( VALUE, '-', - 1, 1 ) + 1 ) +1 AS sno ");
sb.append(" FROM ERM_RECORD_DATA ");
sb.append(" JOIN META_ATTRIBUTE ON META_ATTRIBUTE.ID=ERM_RECORD_DATA.ATTRIBUTE_ID ");
sb.append(" WHERE META_ATTRIBUTE.CODE = 'DADH' AND VALUE IS NOT NULL");
if(dateStr!=null){
sb.append(" AND VALUE LIKE '%"+dateStr+"%' ");
}
StringBuilder sb2 = new StringBuilder();
sb2.append("SELECT MAX(sno) FROM ( "+sb +")");
System.out.println("sb2::" + sb2.toString());
//sb2::SELECT MAX(sno) FROM ( SELECT DISTINCT SUBSTR( VALUE, INSTR( VALUE, '-', - 1, 1 ) + 1 ) +1 AS sno FROM ERM_RECORD_DATA JOIN META_ATTRIBUTE ON META_ATTRIBUTE.ID=ERM_RECORD_DATA.ATTRIBUTE_ID WHERE META_ATTRIBUTE.CODE = 'DADH' AND VALUE IS NOT NULL AND VALUE LIKE '%123%' )
}
2、SQL拼接
public static void main(String[] args) {
SQL sql1 = new SQL();
sql1.SELECT("BID")
.FROM("RECORD_BUSINESS")
.WHERE("RID=#{rid}");
SQL sql = new SQL();
sql.SELECT("REMARK")
.FROM("BIZ_PROCESS")
.WHERE("id in (" + sql1 + ") AND to_char(MODIFIED_DATE,'yyyyMMddhh24mi') LIKE CONCAT(#{time}, '%') AND REMARK is NOT NULL AND ROWNUM=1");
//sql::SELECT REMARK FROM BIZ_PROCESS WHERE (id in (SELECT BID FROM RECORD_BUSINESS
WHERE (RID=#{rid})) AND to_char(MODIFIED_DATE,'yyyyMMddhh24mi') LIKE CONCAT(#{time}, '%') AND REMARK is NOT NULL AND ROWNUM=1)
}