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 List<String>getUserName()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<String> 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<String> 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();
	}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值