JAVA中SQL动态拼接(笔记、(11))

一、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)

}

​

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值