1. 程式人生 > >用資料來源的hibernate 拼接insert SQL 語句

用資料來源的hibernate 拼接insert SQL 語句

關於hibernate 的拼接sql語句在網上查了很多,但關於insert的確不是很多,將這些記錄下來。

在插入語句的時候:

// 此SQL語句因資料庫欄位型別而定,兩種方式前面為NUMBER型別,後面為字串型別

String sql ="INSERT INTO TABLE"+"(PARAM1,PARAM2) VALUES("PARAM1",'"+PARAM2+"')";

在插入語句的時候,我遇到的問題是,要在其他表裡查詢資料,在將資料插入進去;

遇到的難點:

1,查詢的日期格式,查詢過來的日期,是無法直接插入到新的表格的

2,查詢的日期是動態的,沒有的時候查詢過來是null值,有的時候要進行格式轉換

3,以什麼樣的形式進行sql的拼接

解決辦法:

首先sql拼接要用StringBuffer 

在進行日期的插入之前首先要做的是將日期的格式轉換成我們想要的格式

 SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy hh:mm:ss");
                    String date1 = null;
                    if(date!=null){
                             date1 = sdf.format(date);
                    }

StringBuffer buffer = new StringBuffer("");

buffer.appen("INSERT INTO TABLE"+"(PARAM1,PARAM2,Date1) VALUES("PARAM1",'"+PARAM2+"'");

if(date1!=null){

buffer.append(","+"TO_DATE('"+date1+"', 'dd-mm-yyyy hh24:mi:ss')"+")")

}else{
buffer.append(","+"null"+")");
}

這樣就解決了以上的所有問題!

但是緊接著就是怎麼執行的問題,現在是StringBuffer 而且要用的是資料來源的方式

解決辦法:

String sql = buffer.toString();

先將其轉換形式

jdbcDaoSupport.getJdbcTemplate("oracle*").execute(sql);

再調想要使用的資料來源執行,問題解決!!