使用Spring做更新操作或者批量更新插入有很多方法,下面说说我用到的一些方法,之后再慢慢补充吧。
1、使用JdbcTemplate做基本的更新插入操作
@Service(“commonInfo”)
public class CommonInfo {
@Autowired
private JdbcTemplate mysqlSearchJdbc;
public void setCycleTime(String field,String time){
try {
String sql = "update table_name set "+ field + "= ? WHERE id=1";
int temp = mysqlSearchJdbc.update(sql,time);
if(temp > 0){
System.out.println(field+"更新成功!");
}else {
System.out.println(field+"更新失败!");
}
}catch (Exception e){
e.printStackTrace();
System.err.println("历史时间更新失败");
}
}
}
2、批量插入操作
public void findCartSkuInfo(){
List<Map<String, Object>> skuList = null;
try{
String field = "cartJob";
String[] updateTime =commonInfo.getCycleTime(field);
skuList = this.mysqlCartJdbc.queryForList(globalProperties.getSqlCartJob(),updateTime);
//获得的数据插入到数据库中
if(skuList != null && skuList.size() > 0){
final List<Map<String, Object>> list = skuList;
String insertSql = "insert into table_name (shopId,openId,behaviorFlag,behaviorTime) values (?,?,?,?)";
mysqlSearchJdbc.batchUpdate(insertSql, new BatchPreparedStatementSetter() {
@Override
public void setValues(PreparedStatement preparedStatement, int i) throws SQLException {
String shopId = String.valueOf(list.get(i).get("sku"));
String open_id = String.valueOf(list.get(i).get("open_id"));
String create_time = String.valueOf(list.get(i).get("create_time"));
preparedStatement.setString(1,shopId);
preparedStatement.setString(2,open_id);
preparedStatement.setInt(3,4);
preparedStatement.setString(4,create_time);
}
@Override
public int getBatchSize() {
return list.size();
}
});
}
}catch (Exception e){
e.printStackTrace();
}
}