首页 运维百科文章正文

java数据库编程实例有哪些类型

运维百科 2025年11月17日 21:30 240 admin

Java数据库编程实例全解析——从入门到精通

在Java开发中,数据库编程是一个核心技能,它允许开发者与数据库进行交互,执行各种操作如查询、更新、删除和插入数据,本文将通过一系列实际的Java数据库编程实例,带领读者从基础到进阶,全面理解并掌握这一技能。

JDBC基础使用

我们介绍Java数据库连接(JDBC)的基本用法,JDBC是Java提供的标准API,用于执行SQL语句和处理结果集,以下是一个简单的示例,展示了如何使用JDBC连接到MySQL数据库,并执行一个SELECT查询。

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class JdbcExample {
    public static void main(String[] args) {
        String url = "jdbc:mysql://localhost:3306/mydatabase";
        String user = "root";
        String password = "password";
        try {
            Connection connection = DriverManager.getConnection(url, user, password);
            Statement statement = connection.createStatement();
            ResultSet resultSet = statement.executeQuery("SELECT * FROM mytable");
            while (resultSet.next()) {
                System.out.println("ID: " + resultSet.getInt("id") + ", Name: " + resultSet.getString("name"));
            }
            statement.close();
            connection.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

使用PreparedStatement防止SQL注入

为了防止SQL注入攻击,建议使用PreparedStatement代替Statement,下面是一个使用PreparedStatement的示例:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class PreparedStatementExample {
    public static void main(String[] args) {
        String url = "jdbc:mysql://localhost:3306/mydatabase";
        String user = "root";
        String password = "password";
        try {
            Connection connection = DriverManager.getConnection(url, user, password);
            String query = "SELECT * FROM mytable WHERE name = ?";
            PreparedStatement preparedStatement = connection.prepareStatement(query);
            preparedStatement.setString(1, "John Doe");
            ResultSet resultSet = preparedStatement.executeQuery();
            while (resultSet.next()) {
                System.out.println("ID: " + resultSet.getInt("id") + ", Name: " + resultSet.getString("name"));
            }
            preparedStatement.close();
            connection.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

使用DAO模式简化数据库访问

为了提高代码的可维护性和可重用性,我们可以采用DAO(Data Access Object)模式,DAO模式将数据库访问逻辑封装在一个单独的类中,使得业务逻辑更加清晰。

java数据库编程实例有哪些类型

// UserDao.java
public interface UserDao {
    List<User> getAllUsers();
    User getUserById(int id);
    void saveUser(User user);
    void updateUser(User user);
    void deleteUser(int id);
}
// UserDaoImpl.java
public class UserDaoImpl implements UserDao {
    private Connection connection;
    public UserDaoImpl(Connection connection) {
        this.connection = connection;
    }
    @Override
    public List<User> getAllUsers() {
        List<User> users = new ArrayList<>();
        String query = "SELECT * FROM users";
        try (Statement statement = connection.createStatement(); ResultSet resultSet = statement.executeQuery(query)) {
            while (resultSet.next()) {
                users.add(new User(resultSet.getInt("id"), resultSet.getString("name"), resultSet.getString("email")));
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return users;
    }
    @Override
    public User getUserById(int id) {
        User user = null;
        String query = "SELECT * FROM users WHERE id = ?";
        try (PreparedStatement preparedStatement = connection.prepareStatement(query)) {
            preparedStatement.setInt(1, id);
            try (ResultSet resultSet = preparedStatement.executeQuery()) {
                if (resultSet.next()) {
                    user = new User(resultSet.getInt("id"), resultSet.getString("name"), resultSet.getString("email"));
                }
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return user;
    }
    @Override
    public void saveUser(User user) {
        String query = "INSERT INTO users (name, email) VALUES (?, ?)";
        try (PreparedStatement preparedStatement = connection.prepareStatement(query)) {
            preparedStatement.setString(1, user.getName());
            preparedStatement.setString(2, user.getEmail());
            preparedStatement.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
    @Override
    public void updateUser(User user) {
        String query = "UPDATE users SET name = ?, email = ? WHERE id = ?";
        try (PreparedStatement preparedStatement = connection.prepareStatement(query)) {
            preparedStatement.setString(1, user.getName());
            preparedStatement.setString(2, user.getEmail());
            preparedStatement.setInt(3, user.getId());
            preparedStatement.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
    @Override
    public void deleteUser(int id) {
        String query = "DELETE FROM users WHERE id = ?";
        try (PreparedStatement preparedStatement = connection.prepareStatement(query)) {
            preparedStatement.setInt(1, id);
            preparedStatement.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

使用ORM框架简化数据库操作

除了直接使用JDBC,还可以使用ORM(对象关系映射)框架来简化数据库操作,Hibernate和MyBatis是两种流行的Java ORM框架,这里以Hibernate为例,展示如何使用它来进行数据库操作。

需要在项目中添加Hibernate依赖:

java数据库编程实例有哪些类型

<!-- pom.xml -->
<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-core</artifactId>
    <version>5.4.21.Final</version>
</dependency>

创建一个实体类User和一个配置文件hibernate.cfg.xml

// User.java
@Entity
@Table(name = "users")
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;
    private String name;
    private String email;
    // getters and setters...
}

<!-- hibernate.cfg.xml -->
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
        <property name="hibernate.connection.driver_class">com.mysql.cj.jdbc.Driver</property>
        <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/mydatabase</property>
        <property name="hibernate.connection.username">root</property>
        <property name="hibernate.connection.password">password</property>
        <property name="show_sql">true</property>
        <property name="format_sql">true</property>
        <mapping class="com.example.User"/>
    </session-factory>
</hibernate-configuration>

使用Hibernate进行数据库操作:

// HibernateExample.java
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import com.example.User;
public class HibernateExample {
    public static void main(String[] args) {
        SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
        Session session = sessionFactory.openSession();
        Transaction transaction = session.beginTransaction();
        // Create a new user object and save it to the database
        User user = new User();
        user.setName("John Doe");
        user.setEmail("john.doe@example.com");
        session.save(user);
        // Update an existing user object in the database
        user = session.get(User.class, 1); // assuming the user with ID 1 exists
        user.setEmail("john.newemail@example.com");
        session.update(user);
        // Delete a user object from the database
        session.delete(user); // assuming we're deleting the same user we just updated/created above for simplicity's sake
        transaction.commit();
        sessionFactory.close();

标签: 数据库连接

发表评论

丫丫技术百科 备案号:新ICP备2024010732号-62