使用原生的JDBC连接MySQL

本文介绍了一个简单的用户登录功能实现方法,通过SQL查询从数据库中获取指定用户名对应的用户信息。使用了Java语言,并借助了PreparedStatement来执行SQL语句,确保了代码的安全性和效率。
 
public static User userLogin(String userName){
        
        //获取数据库连接对象
        Connection connection = DBManager.getConnection();
        PreparedStatement preparedStatement = null;
        ResultSet resultSet = null;
        
        //生成SQL代码
        StringBuilder sqlStatement = new StringBuilder();
        sqlStatement.append("select * from user where Username=?");
        
        try {
            //设置数据库的字段值
            preparedStatement = connection.prepareStatement(sqlStatement.toString());
            preparedStatement.setString(1, userName);
            
            resultSet = preparedStatement.executeQuery();
            User user = new User();
            if(resultSet.next()){
                user.setUsername(resultSet.getString("Username"));
                user.setPassword(resultSet.getString("Password"));
                return user;
            }
            else{
                return null;
            }
        } catch (SQLException ex) {
            Logger.getLogger(UserDAO.class.getName()).log(Level.SEVERE, null, ex);
            return null;
        }finally{
            DBManager.CloseAll(connection, preparedStatement, resultSet);
        }
    }

 

是的,**在 Spring Boot 项目中完全支持使用原生 JDBC 连接数据库**。虽然 Spring Boot 提供了更高层的抽象(如 JdbcTemplate、JPA、MyBatis 等),但如果你希望更贴近底层控制数据库连接、事务、SQL 执行等,可以使用原生 JDBC。 --- ## ✅ 使用原生 JDBC 的步骤 ### 1. 添加依赖 在 `pom.xml` 中添加数据库驱动依赖(以 MySQL 为例): ```xml <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.33</version> </dependency> ``` ### 2. 配置数据源信息 在 `application.properties` 或 `application.yml` 中配置数据库连接信息: ```properties spring.datasource.url=jdbc:mysql://localhost:3306/your_database?useSSL=false&serverTimezone=UTC spring.datasource.username=root spring.datasource.password=123456 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver ``` 或者 `application.yml`: ```yaml spring: datasource: url: jdbc:mysql://localhost:3306/your_database?useSSL=false&serverTimezone=UTC username: root password: 123456 driver-class-name: com.mysql.cj.jdbc.Driver ``` ### 3. 注入 `DataSource` 并使用原生 JDBC Spring Boot 默认会自动配置 `DataSource`,你可以直接注入它并使用原生 JDBC 进行数据库操作。 **示例代码:** ```java import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Repository; import javax.sql.DataSource; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; @Repository public class JdbcNativeRepository { @Autowired private DataSource dataSource; public List<String> getAllUsernames() { List<String> usernames = new ArrayList<>(); String sql = "SELECT username FROM users"; try (Connection connection = dataSource.getConnection(); PreparedStatement statement = connection.prepareStatement(sql); ResultSet resultSet = statement.executeQuery()) { while (resultSet.next()) { usernames.add(resultSet.getString("username")); } } catch (SQLException e) { e.printStackTrace(); } return usernames; } } ``` --- ## ✅ 使用原生 JDBC 的注意事项 1. **手动管理资源:** - 必须手动关闭 `Connection`、`PreparedStatement` 和 `ResultSet`。 - 推荐使用 try-with-resources 语法自动关闭资源。 2. **事务控制:** - 如果需要事务控制,需手动设置 `connection.setAutoCommit(false)`,并在操作完成后提交或回滚。 3. **连接池:** - Spring Boot 默认使用连接池是 HikariCP,即使你使用原生 JDBC,底层也会自动使用连接池管理连接。 4. **异常处理:** - JDBC 会抛出 `SQLException`,需要良好的异常处理机制。 --- ## ✅ 示例:使用原生 JDBC 实现插入操作 ```java public void insertUser(String username, String email) { String sql = "INSERT INTO users(username, email) VALUES (?, ?)"; try (Connection connection = dataSource.getConnection(); PreparedStatement statement = connection.prepareStatement(sql)) { connection.setAutoCommit(false); // 开启事务 statement.setString(1, username); statement.setString(2, email); statement.executeUpdate(); connection.commit(); // 提交事务 } catch (SQLException e) { e.printStackTrace(); // 可以在这里做 rollback } } ``` --- ## ✅ 原生 JDBC 的优缺点 | 优点 | 缺点 | |------|------| | 直接操作数据库,性能更高 | 代码冗长,手动管理资源 | | 不依赖任何框架,灵活 | 易出错(如 SQL 注入、资源未关闭等) | | 更好地理解底层原理 | 开发效率低,不适合大型项目 | ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值