Java JDBC 进行批量跟新操作
2016-10-28 22:36
351 查看
//Java JDBC 进行批量跟新操作
1. 先定义一个DAO接口专门为某个model数据集的增删改查进行服务。
public interface IAdStatDAO {
// 可以用于增删改
void updateBatch(List<AdStat> adStats);
}
2. // 对数据进行批量的更新
public class AdStatDAOImpl implements IAdStatDAO {
@Override
public void updateBatch(List<AdStat> adStats) {
JDBCHelper jdbcHelper = JDBCHelper.getInstance();
// 2.1 区分开来哪些是要插入的,哪些是要更新的
List<AdStat> insertAdStats = new ArrayList<AdStat>();
List<AdStat> updateAdStats = new ArrayList<AdStat>();
//2.2 先进行查询语句
String selectSQL = "SELECT count(*) "
+ "FROM ad_stat "
+ "WHERE date=? "
+ "AND province=? "
+ "AND city=? "
+ "AND ad_id=?";
//2.3 对数据进行查询根据结果进行分别得更新操作。
for(AdStat adStat : adStats) {
// 此处必须是final修饰
final AdStatQueryResult queryResult = new AdStatQueryResult();
Object[] params = new Object[]{adStat.getDate(),
adStat.getProvince(),
adStat.getCity(),
adStat.getAdid()};
//2.4 进行查询操作
jdbcHelper.executeQuery(selectSQL, params, new JDBCHelper.QueryCallback() {
@Override
public void process(ResultSet rs) throws Exception {
if(rs.next()) {
int count = rs.getInt(1);
queryResult.setCount(count);
}
}
});
int count = queryResult.getCount();
//2.5 分别放到对应的数组中
if(count > 0) {
updateAdStats.add(adStat);
} else {
insertAdStats.add(adStat);
}
}
// 对于需要插入的数据,执行批量插入操作
String insertSQL = "INSERT INTO ad_stat VALUES(?,?,?,?,?)";
List<Object[]> insertParamsList = new ArrayList<Object[]>();
for(AdStat adStat : insertAdStats) {
Object[] params = new Object[]{adStat.getDate(),
adStat.getProvince(),
adStat.getCity(),
adStat.getAdid(),
adStat.getClickCount()};
insertParamsList.add(params);
}
jdbcHelper.executeBatch(insertSQL, insertParamsList);
// 对于需要更新的数据,执行批量更新操作
String updateSQL = "UPDATE ad_stat SET click_count=? "
+ "FROM ad_stat "
+ "WHERE date=? "
+ "AND province=? "
+ "AND city=? "
+ "AND ad_id=?";
List<Object[]> updateParamsList = new ArrayList<Object[]>();
for(AdStat adStat : updateAdStats) {
Object[] params = new Object[]{adStat.getClickCount(),
adStat.getDate(),
adStat.getProvince(),
adStat.getCity(),
adStat.getAdid()};
updateParamsList.add(params);
}
// jin
jdbcHelper.executeBatch(updateSQL, updateParamsList);
}
}
1. 先定义一个DAO接口专门为某个model数据集的增删改查进行服务。
public interface IAdStatDAO {
// 可以用于增删改
void updateBatch(List<AdStat> adStats);
}
2. // 对数据进行批量的更新
public class AdStatDAOImpl implements IAdStatDAO {
@Override
public void updateBatch(List<AdStat> adStats) {
JDBCHelper jdbcHelper = JDBCHelper.getInstance();
// 2.1 区分开来哪些是要插入的,哪些是要更新的
List<AdStat> insertAdStats = new ArrayList<AdStat>();
List<AdStat> updateAdStats = new ArrayList<AdStat>();
//2.2 先进行查询语句
String selectSQL = "SELECT count(*) "
+ "FROM ad_stat "
+ "WHERE date=? "
+ "AND province=? "
+ "AND city=? "
+ "AND ad_id=?";
//2.3 对数据进行查询根据结果进行分别得更新操作。
for(AdStat adStat : adStats) {
// 此处必须是final修饰
final AdStatQueryResult queryResult = new AdStatQueryResult();
Object[] params = new Object[]{adStat.getDate(),
adStat.getProvince(),
adStat.getCity(),
adStat.getAdid()};
//2.4 进行查询操作
jdbcHelper.executeQuery(selectSQL, params, new JDBCHelper.QueryCallback() {
@Override
public void process(ResultSet rs) throws Exception {
if(rs.next()) {
int count = rs.getInt(1);
queryResult.setCount(count);
}
}
});
int count = queryResult.getCount();
//2.5 分别放到对应的数组中
if(count > 0) {
updateAdStats.add(adStat);
} else {
insertAdStats.add(adStat);
}
}
// 对于需要插入的数据,执行批量插入操作
String insertSQL = "INSERT INTO ad_stat VALUES(?,?,?,?,?)";
List<Object[]> insertParamsList = new ArrayList<Object[]>();
for(AdStat adStat : insertAdStats) {
Object[] params = new Object[]{adStat.getDate(),
adStat.getProvince(),
adStat.getCity(),
adStat.getAdid(),
adStat.getClickCount()};
insertParamsList.add(params);
}
jdbcHelper.executeBatch(insertSQL, insertParamsList);
// 对于需要更新的数据,执行批量更新操作
String updateSQL = "UPDATE ad_stat SET click_count=? "
+ "FROM ad_stat "
+ "WHERE date=? "
+ "AND province=? "
+ "AND city=? "
+ "AND ad_id=?";
List<Object[]> updateParamsList = new ArrayList<Object[]>();
for(AdStat adStat : updateAdStats) {
Object[] params = new Object[]{adStat.getClickCount(),
adStat.getDate(),
adStat.getProvince(),
adStat.getCity(),
adStat.getAdid()};
updateParamsList.add(params);
}
// jin
jdbcHelper.executeBatch(updateSQL, updateParamsList);
}
}
相关文章推荐
- java使用JDBC连接mysql并且进行批量增删改操作
- Java的jdbc使用addBatch进行批处理操作的几种方式
- JAVA+JDBC对数据库的数据进行增加、修改、删除、查询等操作
- Java对数据库进行事务处理(批量删除操作)
- jdbc连接Oracle/MySQL数据库进行批量导入操作,如何提高效率???
- 建立Java Web Project并进行JDBC操作
- Java通过JDBC 进行MySQL数据库操作
- 【java基础:JDBC】采用DBUtils工具集进行数据库的增删改操作的demostration
- 删除信息[置顶] Java中怎样实现批量删除操作(Java对数据库进行事务处理)?
- JDBC java对MySQL数据库进行查询操作,并把查询的结果输出
- mySql事务_ _Java中怎样实现批量删除操作(Java对数据库进行事务处理)?
- Java对数据库进行事务处理(批量删除操作)
- java使用jdbc对mysql数据库进行操作的步骤和代码
- Java中怎样实现批量删除操作(Java对数据库进行事务处理)?
- JDBC--java链接数据库并对其进行操作
- java通过jdbc连接sqlite数据库进行CRUD操作
- Java使用jdbc连接Sqlite数据库,进行各种数据操作
- Java的jdbc使用addBatch进行批处理操作的几种方式
- [Sqlite]-->Java使用jdbc连接Sqlite数据库进行各种数据操作的详细过程
- Java -- JDBC 学习--通过Statement进行数据库更新操作