查询步骤
1.准备连接数据库需要的变量 (库名称,库用户名,库密码) 2.提前写好查询数据库的命令 3.声明一个存参数的list 4.连接数据库(创建连接,准备指令,连接) 5.拿到容器,循环容器拿到内容 6.把内容发给前端
1. 建立数据库连接
需要知道数据库名称,用户名,密码
java
// 1. 配置连接信息(必须改成你自己的)
String url = "jdbc:mysql://localhost:3306/你的数据库名?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true";
String user = "root";
String password = "你的MySQL密码";
2. 提前写好数据库命令(编写 SQL 查询语句)
java
String sql = "SELECT id,name FROM user";
3. 声明一个存参数的list
java
List<Map<String, Object>> list = new ArrayList<>();
4. 连接数据库 (预编译SQL=创建 PreparedStatement 对象)
java
创建数据库连接 接水管
Connection conn = DriverManager.getConnection(url, user, password);
// 创建预处理语句(准备一下)
PreparedStatement ps = conn.prepareStatement(sql);
// 执行查询并获取结果(开水龙头、接水)
ResultSet rs = ps.executeQuery()
注:rs打印出来是容器,不是数据库具体内容,要内容只能循环。
5. 循环容器拿到内容
java
while (rs.next()) {
Map<String, Object> obj = new HashMap<>();
obj.put("id", rs.getInt("id"));
obj.put("name", rs.getString("name"));
list.add(obj);
}
// 打印给前端的数组对象格式
System.out.println("发给前端的数据:");
System.out.println(list);
6. 把数据发给前端
等我后面添加,感觉有点麻烦。休息休息
整体代码
java
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class TestQuery {
public static void main(String[] args) {
// -------定义连接数据库需要的变量-------
String url = "jdbc:mysql://localhost:3306/userlist?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true";
String user = "root";
String password = "123456";
// 先从表中,拿到数据
String sql = "SELECT id,name FROM user";
// 【关键】list 必须声明在 try 外面,保证作用域正确
// 1.List 声明这是一个有序列表
// 2.<Map<String, Object>> 定义列表的元素是键值对组合的对象
// 3.这个数组包对象的组合叫做list
// 4.new ArrayList<>();创建一个空的、真实可用的列表,里面专门存放你左边规定的那种键值对数据。
// 123部分属于规定,4才是创建
List<Map<String, Object>> list = new ArrayList<>();
try (
// 创建数据库连接 接水管
Connection conn = DriverManager.getConnection(url, user, password);
// 创建预处理语句(装水龙头 / 准备指令)
PreparedStatement ps = conn.prepareStatement(sql);
// 执行查询并获取结果(开水龙头、接水)
ResultSet rs = ps.executeQuery()
) {
// 打印的rs只是容器,并没有具体内容,要拿到数据库所有内容,只能循环
System.out.println(rs);
while (rs.next()) {
Map<String, Object> obj = new HashMap<>();
obj.put("id", rs.getInt("id"));
obj.put("name", rs.getString("name"));
list.add(obj);
}
// 打印给前端的数组对象格式
System.out.println("发给前端的数据:");
System.out.println(list);
} catch (Exception e) {
e.printStackTrace();
}
}
}