如果數據庫數據過大,用java讀取數據庫,分頁存入集合,每分頁一次集合就被調用一次,這個java實現的方式是怎么樣的?直接直接在sql語句上面加個for循環嗎?for(){String sql = "SELECT ID,name, url From websites limit " + (i * 2) + ",2;";......}
2 回答
UYOU
TA貢獻1878條經驗 獲得超4個贊
import java.sql.Connection;
import java.sql.DriverManager;
public class DBHelper {
private static final String driver = "com.mysql.jdbc.Driver";//數據庫驅動
private static final String url = "jdbc:mysql://localhost:3306/gumysql?useUnicon=true&characterEncoding=UTF-8";
private static final String username = "root";
private static final String password = "root";
static
{
try
{
Class.forName(driver);
}
catch (Exception e)
{
e.printStackTrace();
}
}
private static Connection conn = null;
//單例模式返回數據庫連接
public static Connection getConnection() throws Exception
{
if(conn == null)
{
conn = DriverManager.getConnection(url, username, password);
return conn;
}
else
{
return conn;
}
}
} import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
public class ReadDBPage {
/**
* @param pageNo 表示第幾頁
* @param pageSize 表示每頁的數量
* @return
*/
public List<String> query(int pageNo, int pageSize) {
//計算起始值,比如假如每頁條數為5,第一頁是0 - 4,第二頁是5 - 9;。。。。
int pageStart = (pageNo - 1) * pageSize;
Connection conn = null;
PreparedStatement stmt = null;
ResultSet rs = null;
String sql = " select * from compare limit ?,?; ";
List<String> mapList = new ArrayList<String>();
try {
conn = DBHelper.getConnection();
stmt = conn.prepareStatement(sql);
//把參數設置到 ?號里面
stmt.setInt(1, pageStart);
stmt.setInt(2, pageSize);
rs = stmt.executeQuery();
while (rs.next()) {
mapList.add(rs.getString("id"));
}
return mapList;
} catch (Exception e) {
e.printStackTrace();
return null;
} finally {
if (rs != null) {
try {
rs.close();
rs = null;
} catch (Exception e) {
e.printStackTrace();
}
}
if (stmt != null) {
try {
stmt.close();
stmt = null;
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
} import java.util.List;
public class Bootstrap {
public static void main(String args[]){
ReadDBPage read = new ReadDBPage();
//查詢第1頁的數據,每頁數據為5條
List<String> strList = read.query(1,5);
//查詢第2頁的數據,每頁數據為5條
List<String> strList2 = read.query(2,5);
//查詢第2頁的數據,每頁數據為4條
List<String> strList3 = read.query(2,4);
System.out.println(strList);
System.out.println(strList2);
System.out.println(strList3);
}
}添加回答
舉報
0/150
提交
取消
