JDBC固定套路模板
关于 JDBC 的背景知识和概念我们已经在JDBC–Java的数据库编程这篇文章中有所介绍了,那么在实际写代码过程中,该如何使用呢? 我们都知道关于数据库的操作无非是增删改查,这也是我们在以后的学习或者是工作中所要经常用到的,其实关于增删改查的代码套路基本一致,因此,我将以代码的形式将几种情况写下来,方便大家以后在用到的时候拿出来借鉴,同时也方便本人以后的回顾.
1 插入数据
- 步骤一: 建立一个数据库类 DBUtil;
public class DBUtil {
// 关于 URL 的写法我们已经在 <<JDBC--Java的数据库编程>> 这边文章中的最后有所介绍了
// 下面的代码或者字段不清楚什么意思的也可以在上一篇文章中找答案
private static final String URL = "jdbc:mysql://127.0.0.1:3306/blogsys?characterEncoding=utf-8&useSSL=false";
private static final String USERNAME = "root";
private static final String PASSWORD = "123456";
private static DataSource dataSource = null;
private static DataSource getDataSource() {
if (dataSource == null) {
synchronized (DBUtil.class) {
if(dataSource == null) {
dataSource = new MysqlDataSource();
((MysqlDataSource)dataSource).setURL(URL);
((MysqlDataSource)dataSource).setUser(USERNAME);
((MysqlDataSource)dataSource).setPassword(PASSWORD);
}
}
}
return dataSource;
}
// 与数据库建立连接
public static Connection getConnection() throws SQLException {
return getDataSource().getConnection();
}
// 关闭释放资源
// 借助 PrepareStatement 拼装SQL语句
public static void close(Connection connection, PreparedStatement preparedStatement, ResultSet resultSet) {
if(resultSet != null) {
try {
resultSet.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(preparedStatement != null) {
try {
preparedStatement.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(connection != null) {
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
- 步骤二: 在 MySQL 中创建一个用户表;
drop table if exists user;
create table user (
userId int primary key auto_increment,
username varchar(128) unique,
password varchar(128)
);
创建成功后有以下效果:
到此为止,我们的表已经建立成功了!
- 步骤三: 写一个用户类;
public class User {
private int userId;
private String username;
private String password;
public int getUserId() {
return userId;
}
public void setUserId(int userId) {
this.userId = userId;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "User{" +
"userId=" + userId +
", username='" + username + '\'' +
", password='" + password + '\'' +
'}';
}
}
- 步骤四: 写一个 UserDao 类来封装我们对 User 表的操作;
public class UserDao {
public void insert(User user) {
System.out.println("插入用户");
Connection connection = null;
PreparedStatement statement = null;
try {
// 1. 和数据库建立连接
connection = DBUtil.getConnection();
// 2. 拼装 SQL
String sql = "insert into user values (null,?,?)";
statement = connection.prepareStatement(sql);
statement.setString(1, user.getUsername());
statement.setString(2, user.getPassword());
// 3. 执行 SQL
int ret = statement.executeUpdate();
if(ret == 1) {
System.out.println("插入用户成功!");
} else {
System.out.println("插入用户失败!");
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
// 4. 释放资源
DBUtil.close(connection,statement,null);
}
}
public static void main(String[] args) {
UserDao userDao = new UserDao();
// 测试一下新增用户
User user = new User();
user.setUsername("ruoyi");
user.setPassword("123456");
userDao.insert(user);
}
查看数据库中是否新增成功:
根据数据库中的信息已经新增成功了!
总结新增步骤:
2 查找数据
这里我们写两个查找的代码,一个是根据 用户名进行查找, 一个是根据 用户 Id 进行查找;
public class UserDao {
public User selectByName(String username) {
System.out.println("根据姓名进行查找");
Connection connection = null;
PreparedStatement statement = null;
ResultSet resultSet = null;
try {
// 1. 与数据库建立连接
connection = DBUtil.getConnection();
// 2. 拼装 SQL
String sql = "select * from user where username = ?";
statement = connection.prepareStatement(sql);
statement.setString(1, username);
// 3. 执行 SQL
resultSet = statement.executeQuery();
// 4. 遍历结果集合
if (resultSet.next()) {
User user = new User();
user.setUserId(resultSet.getInt("userId"));
user.setUsername(resultSet.getString("username"));
user.setPassword(resultSet.getString("password"));
return user;
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
// 5. 释放资源
DBUtil.close(connection,statement,resultSet);
}
return null;
}
public User selectById(int userId) {
System.out.println("根据 id 进行查找");
Connection connection = null;
PreparedStatement statement = null;
ResultSet resultSet = null;
try {
// 1. 与数据库建立连接
connection = DBUtil.getConnection();
// 2. 拼装 SQL
String sql = "select * from user where userId = ?";
statement = connection.prepareStatement(sql);
statement.setInt(1,userId);
// 3. 执行 SQL
resultSet = statement.executeQuery();
// 4. 遍历结果集合
if (resultSet.next()) {
User user = new User();
user.setUserId(resultSet.getInt("userId"));
user.setUsername(resultSet.getString("username"));
user.setPassword(resultSet.getString("password"));
return user;
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
// 5. 关闭释放资源
DBUtil.close(connection,statement,resultSet);
}
return null;
}
public static void main(String[] args) {
UserDao userDao = new UserDao();
// 测试一下查找用户
// 根据用户名进行查找
User user = userDao.selectByName("ruoyi");
System.out.println(user);
// 根据用户 id 查找用户对象
/* User user = userDao.selectById(1);
System.out.println(user);*/
}
测试结果:
总结查找步骤:
3 删除数据
public class UserDao {
public void delete(String username) {
System.out.println("删除指定用户");
Connection connection = null;
PreparedStatement statement = null;
try {
// 1. 与数据库建立连接
connection = DBUtil.getConnection();
// 2. 拼装 SQL
String sql = "delete from user where username = ?";
statement = connection.prepareStatement(sql);
statement.setString(1,username);
// 3. 执行 SQL
int ret = statement.executeUpdate();
if(ret == 1) {
System.out.println("删除成功!");
} else {
System.out.println("删除失败");
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBUtil.close(connection,statement,null);
}
}
public static void main(String[] args) {
UserDao userDao = new UserDao();
// 测试一下删除用户
userDao.delete("admin");
}
测试结果:
总结删除步骤:
4 修改数据
public class UserDao {
public void update(String username) {
System.out.println("修改用户信息");
Connection connection = null;
PreparedStatement statement = null;
Scanner scanner = new Scanner(System.in);
System.out.println("请输入要修改的用户名称的新称呼");
String name = scanner.next();
try {
// 1. 与数据库建立连接
connection = DBUtil.getConnection();
// 2. 拼装 SQL
String sql = "update user set username = ? where username = ?";
statement = connection.prepareStatement(sql);
statement.setString(1,name);
statement.setString(2,username);
// 3. 执行 SQL
int ret = statement.executeUpdate();
if (ret == 1) {
System.out.println("修改成功!");
} else {
System.out.println("修改失败!");
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBUtil.close(connection,statement,null);
}
}
public static void main(String[] args) {
UserDao userDao = new UserDao();
// 测试一下删除用户
userDao.update("ruoyi");
}
测试结果:
总结修改步骤: