发表于: 2025-03-17 20:24:32
0 19
今天完成的事情:
- 17.编写DAO,分别JdbcTemplate和Mybatis连接数据库,注意使用JDBCTemplate的时候分离Interface和Imple,使用Mybatis的时候注意理解为什么不需要Impl,注意遵守命名规范。
- 用jdbc连接数据库,尝试进行增加,查找,改变的操作,学习一些面向对象的基础知识。
- 查询
package org.example; // 假设你的包名为 test,请根据实际情况调整
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class test111 implements UserDao {
private final String url = "jdbc:mysql://localhost:3306/run?useSSL=false&serverTimezone=UTC";
private final String user = "root";
private final String password = "199410"; // 替换为你的实际密码
@Override
public void queryAllUsers() {
// 使用 SELECT 语句来查询 ye 表中所有记录
String sql = "SELECT * FROM ye";
try (Connection conn = DriverManager.getConnection(url, user, password);
PreparedStatement pstmt = conn.prepareStatement(sql)) {
ResultSet rs = pstmt.executeQuery(); // 使用 executeQuery 进行查询
while (rs.next()) { // 遍历结果集
int id = rs.getInt("id");
String username = rs.getString("name"); // 假设有一个名为 name 的列
int QQ = rs.getInt("QQ"); // 假设有一个名为 QQ 的列
System.out.println("ID: " + id + ", Username: " + username + ", QQ: " + QQ);
}
} catch (SQLException e) {
System.err.println("SQL异常: " + e.getMessage());
e.printStackTrace();
}
}
public static void main(String[] args) {
UserDao userDao = new test111(); // 使用接口类型引用具体实现类的对象
userDao.queryAllUsers(); // 查询 ye 表中的所有用户信息
}
}- 增加
package org.example;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class test222{
private final String url = "jdbc:mysql://localhost:3306/run?useSSL=false&serverTimezone=UTC";
private final String user = "root";
private final String password = "199410"; // 确保这是正确的密码
public void addUser(int Id, String name, int QQ) {
String sql = "INSERT INTO ye (id, name, QQ) VALUES (?, ?, ?)";
try (Connection conn = DriverManager.getConnection(url, user, this.password);
PreparedStatement pstmt = conn.prepareStatement(sql)) {
// 设置SQL语句中的参数
pstmt.setInt(1, Id); // 设置第一个'?'参数
pstmt.setString(2, name); // 设置第二个'?'参数
pstmt.setInt(3, QQ); // 设置第三个'?'参数
int affectedRows = pstmt.executeUpdate();
System.out.println("受影响的行数: " + affectedRows);
} catch (SQLException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
test222 userDao = new test222();
// 调用addUser方法添加新用户
userDao.addUser(3, "newUsername", 12); // 添加ID为3的新用户
}
}- 改变
package org.example;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class Test4 {
private final String url = "jdbc:mysql://localhost:3306/run?useSSL=false&serverTimezone=UTC";
private final String user = "root";
private final String password = "199410"; // 确保这是正确的密码
/**
* 更新表格中指定ID的记录
*/
public void updateUser(int Id, String name, int QQ) {
String sql = "UPDATE ye SET name = ?, QQ = ? WHERE id = ?";
try (Connection conn = DriverManager.getConnection(url, user, this.password);
PreparedStatement pstmt = conn.prepareStatement(sql)) {
// 设置SQL语句中的参数
pstmt.setString(1, name); // 设置第一个'?'参数,对应'name'
pstmt.setInt(2, QQ); // 设置第二个'?'参数,对应'QQ'
pstmt.setInt(3, Id); // 设置第三个'?'参数,用于定位要更新的行
int affectedRows = pstmt.executeUpdate();
System.out.println("受影响的行数: " + affectedRows);
} catch (SQLException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
Test4 userDao = new Test4();
// 调用updateUser方法更新用户信息
userDao.updateUser(3, "updatedUsername", 456789); // 更新ID为3的用户的name和QQ
}
}
明天计划的事:
继续练习用jdbc连接数据库,增加接口功能
遇到的问题:
代码中没有用到独立的DAO接口
收获:
成功使用jdbc连接数据库,尝试进行增加,查找,改变的操作,学习一些面向对象的基础知识。
评论