ToB企服应用市场:ToB评测及商务社交产业平台

标题: Java入门11(JDBC) [打印本页]

作者: 民工心事    时间: 2023-7-10 17:23
标题: Java入门11(JDBC)
JDBC

驱动加载 => 连接创建 => 创建编译 / 预编译语句 => 获取结果集 => 遍历结果集 => 返回结果集
接口Driver驱动Connection连接Statement操作ResultSet结果集连接数据库(mysql)

统一资源定位符URL:jdbc:mysql:// + ip地址 + 端口 + 访问的数据库 + 请求参数(配置信息)
mysql驱动类的完整路径:com.mysql.jdbc.Driver
  1. public class DBUtil {
  2.     // 定义用户名
  3.     private static final String USER_NAME = "root";
  4.     // 定义密码
  5.     private static final String PASSWORD = "123456";
  6.     // URL--统一资源定位符
  7.     // jdbc:mysql:// + ip地址 + 端口 + 访问的数据库 + 请求参数(配置信息)
  8.     private static final String URL = "jdbc:mysql://localhost:3306/iWeb?characterEncoding=utf8";
  9.     // 加载驱动(静态代码块)
  10.     static {
  11.         // mysql驱动类的完整路径
  12.         try {
  13.             Class.forName("com.mysql.jdbc.Driver");
  14.         } catch (ClassNotFoundException e) {
  15.             System.out.println("驱动加载失败!");
  16.         }
  17.     }
  18.     // 定义一个获取数据库连接的方法
  19.     public static Connection getConnection(){
  20.         try {
  21.             return DriverManager.getConnection(URL,USER_NAME,PASSWORD);
  22.         } catch (SQLException e) {
  23.             System.out.println("连接获取失败!");
  24.             return null;
  25.         }
  26.     }
  27. }
复制代码
  1. // 连接测试
  2. public static void main(String[] args) {
  3.     // 定义sql语句
  4.     String sql = "insert into student(name) values('robot03')";
  5.     // try-with 代码块,在try后额外提供一个括号,括号里面的资源在try-catch结束后自动释放
  6.     // 只有实现了AutoCloseable接口的类,才支持使用try-with自动关闭
  7.     // 获取数据库连接 + 生成statement编译语句
  8.     try(Connection connection = DBUtil.getConnection();
  9.         Statement statement = connection.createStatement()) {
  10.         // 执行语句
  11.         statement.execute(sql);
  12.     } catch (SQLException e) {
  13.         e.printStackTrace();
  14.     }
  15. }
复制代码
代码封装(DAO)& CRUD

​        DAO层:负责提供JDBC支持,提供对应的DAO接口和实现类
​        ORM(object relation model):对象应用模型,对数据库对象的映射
  1. // 测试表对应的JavaBean
  2. @Data
  3. @AllArgsConstructor
  4. @NoArgsConstructor
  5. public class Student {
  6.     private long id;
  7.     private String name;
  8.     private String gender;
  9.     private String address;
  10.     private long phone;
  11. }
复制代码
增(insert)
  1. // 增(insert)
  2. public void insert(Student student) {
  3.     // 空值判断
  4.     if(student == null || student.getName() == null || "".equals(student.getName())){
  5.         System.out.println("参数有误!");
  6.         return;
  7.     }
  8.     String sql = "insert into student(NAME,GENDER,ADDRESS,PHONE) values(?,?,?,?)";
  9.     try(Connection connection = DBUtil.getConnection();
  10.         PreparedStatement preparedStatement = connection.prepareStatement(sql)){
  11.         // 添加参数
  12.         preparedStatement.setString(1,student.getName());
  13.         preparedStatement.setString(2,student.getGender());
  14.         preparedStatement.setString(3,student.getAddress());
  15.         preparedStatement.setInt(4,student.getPhone());
  16.         // 执行语句
  17.         preparedStatement.execute();
  18.     }catch(SQLException e){
  19.         e.printStackTrace();
  20.     }
  21. }
复制代码
删(delete)

[code]// 删(delete)public void delete(Student student) {    String sql = "delete from student where 1=1";    if(student == null){        System.out.println("参数有误!");        return;    }    if(student.getId() > 0 && (student.getName() == null || "".equals(student.getName()))){        // 使用 PreparedStatement 进行参数传递,只需要将 sql 中的参数标记为 ? 即可        sql = sql +" and id = ?";        // 使用预编译对象的时候,在创建对象时就需要传入sql        try(Connection connection = DBUtil.getConnection();            PreparedStatement preparedStatement = connection.prepareStatement(sql)){            // 数字代表参数序号            preparedStatement.setInt(1, student.getId());            // 执行sql语句            preparedStatement.execute();        }catch(SQLException e){            e.printStackTrace();        }    } else if (student.getId()




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4