关于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);
再调想要使用的数据源执行,问题解决!!