Springboot整合jdbcTemplate

这次项目是要通过页面传sql语句,出于担心页面传来的sql无法配置到mapping.xml文件中,就先用了jdbcTemplate。现在工具都封装的很好了,用起来也很简单。

@Autowired
private JdbcTemplate jdbcTemplate ;

LobHandler lobHandler = new DefaultLobHandler() ; // reusable object

jdbcTemplate .execute( "insert into soo_resource(uuid, name, sql, createtime, flag, version, seq) values (?,?,?,?,?,?,?)" , new AbstractLobCreatingPreparedStatementCallback(lobHandler) {
@Override
protected void setValues (PreparedStatement preparedStatement , LobCreator lobCreator) throws SQLException {
preparedStatement.setString( 1 , createUuid()) ;
preparedStatement.setString( 2 , "gafis_person" ) ; //得改
lobCreator.setClobAsString(preparedStatement , 3 , textAreaSql ) ;
preparedStatement.setTimestamp( 4 , new Timestamp(System. currentTimeMillis ())) ; //setTimestamp保留时分秒
preparedStatement.setInt( 5 , 0 ) ;
preparedStatement.setInt( 6 , 1 ) ;
preparedStatement.setLong( 7 , 0L ) ;
}
}) ;

以上是insert代码,需要注意两点
1,处理clob
step1
LobHandler lobHandler = new DefaultLobHandler() ; //专业处理各种lob
step2
lobCreator.setClobAsString(preparedStatement , 3 , textAreaSql ) ; //插入
2,时间格式处理
java中的PreparedStatement类型的setDate() 方法要求 java.sql.Date,而 java.sql.Date 的构造函数不能为空。  
所以正确做法是:  
pstmt.setDate(8, new Date(System.currentTimeMillis()));  
或者:  
pstmt.setDate(8, new Date(new java.util.Date().getTime()));  

另外,setDate()只能是日期型,最小单位是日。假如需要时分秒需要:  
pstmt.setTiemstamp(8, new Timestamp(System.currentTimeMillis()));  
或者:  
pstmt.setTimestamp(8, new Timestamp(new java.util.Date().getTime())); 

如果把从自己文件中的String类型的Date直接存入数据库中,可以使用 
pstmt.setTimestamp(8,Timestamp.valueOf(in.get(8)) );


 最后,由于用ajax发送请求,接收返回。注意如何在success函数中接收返回值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值