java mysql 数据分页_java mysql分页查询大量数据,批量插入

//mysql连接 rewriteBatchedStatements=true打开批量写入

public static Connection getConn() throws SQLException {

String userName="root";

String password="123";

String url="jdbc:mysql://127.0.0.1/content?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&rewriteBatchedStatements=true";

try {

Class.forName("com.mysql.jdbc.Driver");

} catch (ClassNotFoundException e) {

e.printStackTrace();

}

Connection conn= conn = DriverManager.getConnection(url, userName, password) ;

return conn;

}

//查询大量数据分页获取,获取总数

public static int getCount() {

Connection dbConn = null;

String query = "SELECT count(*) as abc from user";

int i = 0;

try {

dbConn = MysqlDbHelp.getConn();

Statement stmt = dbConn.createStatement();

ResultSet rs = stmt.executeQuery(query);

if (rs.next()) {

i = rs.getInt("abc");

}

} catch (SQLException e) {

e.printStackTrace();

} catch (Exception e) {

e.printStackTrace();

}

return i;

}//分页获取大量数据

public static ListgetUserName()throws Exception{

int count = Test2.getMsgCount();

Connection dbConn = MysqlDbHelp.getConn();

//每次查询个数

int PAGE_SIZE = 10000;

//计算页数

int page = count % 5 == 0 ? count / PAGE_SIZE : count / PAGE_SIZE + 1;

System.out.println(page + "总数");

List result = new ArrayList<>();

for (int i = 1; i <= page; i++) {

String sql = "SELECT name from user limit ?,?";

PreparedStatement ps = dbConn.prepareStatement(sql);

ps.setInt(1, (i - 1) * PAGE_SIZE);

ps.setInt(2, PAGE_SIZE);

ResultSet rs = ps.executeQuery();

while (rs.next()) {

String name = rs.getString("name");

result.add(name);

}

}

return result;

}

//批量插入

public static void bathInsert(List results){

Connection dbConn = MysqlDbHelp.getConn();

dbConn.setAutoCommit(false);

String sql12 = insert into user(name) values(?)";

PreparedStatement preStmt1 = dbConn.prepareStatement(sql12);

for (int i1 = 0; i1 < result.size(); i1++) {

preStmt1.setString(1,results.get(i));

//增加批处理

preStmt1.addBatch();

}

preStmt1.executeBatch();

dbConn.commit();

}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值