JDBC实现java数据库连接(附完整例子+超详细注解)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: JDBC实现java数据库连接(附完整例子+超详细注解)

本人刚写博客不久,是个新人,望大家能给予一些鼓励。 您的一个赞或者是评论区的一句话都将是对我最大的激励。

简单一句话先来了解下JDBC

JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。

说白了就是实现 java和数据库的连接。

附上例子:

先让大家看下我的路径:

看到这么多的类屏幕前的你是不是被吓到了?

其实也不难。

放代码!

(以下代码建议按顺序观看)

Dept

package com.etc.entity;
//部门类
public class Dept {
  private int deptNo;  //部门号
  private String deptName;  //部门名
  private String deptAddress;  //部门地址
  //构造方法
  public Dept() {
    super();
  }
  public Dept(String deptName, String deptAddress) {
    super();
    this.deptName = deptName;
    this.deptAddress = deptAddress;
  }
  public Dept(int deptNo, String deptName, String deptAddress) {
    super();
    this.deptNo = deptNo;
    this.deptName = deptName;
    this.deptAddress = deptAddress;
  }
 //重写toString方法 
  @Override
  public String toString() {
    return "Dept [deptNo=" + deptNo + ", deptName=" + deptName + ", deptAddress=" + deptAddress + "]";
  }
  //get和set访问器
  public int getDeptNo() {
    return deptNo;
  }
  public void setDeptNo(int deptNo) {
    this.deptNo = deptNo;
  }
  public String getDeptName() {
    return deptName;
  }
  public void setDeptName(String deptName) {
    this.deptName = deptName;
  }
  public String getDeptAddress() {
    return deptAddress;
  }
  public void setDeptAddress(String deptAddress) {
    this.deptAddress = deptAddress;
  }
}

TestAdd

package com.etc.option;
//增方法
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
/**
 * 第一个JDBC程序,向数据库中添加一条记录
 * @author GGBOOM
 *
 */
public class TestAdd {
  public static void main(String[] args) throws ClassNotFoundException {
    //1.mysql-connector-java-5.1.39-bin.jar添加到构建路径
    //JDBC需要这个JAR包来完成我们对数据库的访问
    //jar包其实就是很多的字节码文件
    //2.连接数据库
    //连接数据库的四个变量
    String driver="com.mysql.jdbc.Driver";
    //如果使用的是jdbc:mysql://127.0.0.1:3306/myschool;那么我们要注意必须将配置里面的远程访问打开
    String url="jdbc:mysql://localhost:3306/myschool";   // 指JDBC连接方式;   jdbc:mysql
                                                         //指你的本机地址;  localhost
                                                         //SQL数据库的端口号;  3306 
                                                         //要连接的数据库;      myschool 
    String userName="root"; //账号
    String userPwd="root";//密码
    String sql="INSERT INTO dept(deptName,deptAddress) VALUES(?,?)";
    Class.forName(driver);//加载驱动
    Connection conn=null;   
    PreparedStatement pstmt=null;
    try {
      conn = DriverManager.getConnection(url, userName, userPwd); //可以使用DriverManager获取连接对象
      pstmt=conn.prepareStatement(sql);//通过连接对象Connection得到一个PreparedStatement对象,他可以帮助我们完成针对数据库的增删查改操作
      pstmt.setString(1,"公关部");
      pstmt.setString(2,"金华");
      //增删改都是对数据库的记录进行更改,他们都是使用executeUpdate这个方法来完成,返回值都是受影响行数
      int result=pstmt.executeUpdate();
      if(result>0) {
        System.out.println("插入成功!");
      }else {
        System.out.println("插入失败!");
      }
    } catch (SQLException e) {
      e.printStackTrace();
    }finally {
      try {
        if(pstmt!=null) {
          pstmt.close();   //关闭操作节省资源
        }
        if(conn!=null) {
          conn.close();
        }
      } catch (SQLException e) {
        e.printStackTrace();
      }
    }
  }
}

TestDel

package com.etc.option;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
/**
 * 第一个JDBC程序,向数据库中添加一条记录
 * @author GGBOOM
 *
 */
public class Testdel {
  public static void main(String[] args) throws ClassNotFoundException {
    //1.mysql-connector-java-5.1.39-bin.jar添加到构建路径
    //JDBC需要这个JAR包来完成我们对数据库的访问
    //jar包其实就是很多的字节码文件
    //2.连接数据库
    //连接数据库的四个变量
    String driver="com.mysql.jdbc.Driver";
    //如果使用的是jdbc:mysql://127.0.0.1:3306/myschool;那么我们要注意必须将配置里面的远程访问打开
    String url="jdbc:mysql://localhost:3306/myschool";
    String userName="root";
    String userPwd="root";
    String sql="delete from dept where deptNo=?";
    //3.加载驱动
    Class.forName(driver);
    //可以使用DriverManager获取连接对象
    Connection conn=null;
    PreparedStatement pstmt=null;
    try {
      conn = DriverManager.getConnection(url, userName, userPwd);
      //通过连接对象Connection得到一个PreparedStatement对象,他可以帮助我们完成针对数据库的增删查改操作
      pstmt=conn.prepareStatement(sql);
      pstmt.setInt(1, 6);
      //增删改都是对数据库的记录进行更改,他们都是使用executeUpdate这个方法来完成,返回值都是受影响行数
      int result=pstmt.executeUpdate();
      if(result>0) {
        System.out.println("删除成功!");
      }else {
        System.out.println("删除失败!");
      }
    } catch (SQLException e) {
      e.printStackTrace();
    }finally {
      try {
        if(pstmt!=null) {
          pstmt.close();
        }
        if(conn!=null) {
          conn.close();
        }
      } catch (SQLException e) {
        e.printStackTrace();
      }
    }
  }
}

TestUpd

package com.etc.option;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
/**
 * 第一个JDBC程序,向数据库中添加一条记录
 * @author GGBOOM
 *
 */
public class TestUpd {
  public static void main(String[] args) throws ClassNotFoundException {
    //1.mysql-connector-java-5.1.39-bin.jar添加到构建路径
    //JDBC需要这个JAR包来完成我们对数据库的访问
    //jar包其实就是很多的字节码文件
    //2.连接数据库
    //连接数据库的四个变量
    String driver="com.mysql.jdbc.Driver";
    //如果使用的是jdbc:mysql://127.0.0.1:3306/myschool;那么我们要注意必须将配置里面的远程访问打开
    String url="jdbc:mysql://localhost:3306/myschool";
    String userName="root";
    String userPwd="root";
    String sql="UPDATE DEPT SET deptAddress=?   WHERE deptno=?";
    //3.加载驱动
    Class.forName(driver);
    //可以使用DriverManager获取连接对象
    Connection conn=null;
    PreparedStatement pstmt=null;
    try {
      conn = DriverManager.getConnection(url, userName, userPwd);
      //通过连接对象Connection得到一个PreparedStatement对象,他可以帮助我们完成针对数据库的增删查改操作
      pstmt=conn.prepareStatement(sql);
      pstmt.setString(1,"金华");
      pstmt.setInt(2, 5);
      //增删改都是对数据库的记录进行更改,他们都是使用executeUpdate这个方法来完成,返回值都是受影响行数
      int result=pstmt.executeUpdate();
      if(result>0) {
        System.out.println("修改成功!");
      }else {
        System.out.println("修改失败!");
      }
    } catch (SQLException e) {
      e.printStackTrace();
    }finally {
      try {
        if(pstmt!=null) {
          pstmt.close();
        }
        if(conn!=null) {
          conn.close();
        }
      } catch (SQLException e) {
        e.printStackTrace();
      }
    }
  }
}

TestQuery

package com.etc.option;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
/**
 * 第一个JDBC程序,向数据库中添加一条记录
 * @author GGBOOM
 *
 */
public class TestQuery {
  public static void main(String[] args) throws ClassNotFoundException {
    //1.mysql-connector-java-5.1.39-bin.jar添加到构建路径
    //JDBC需要这个JAR包来完成我们对数据库的访问
    //jar包其实就是很多的字节码文件
    //2.连接数据库
    //连接数据库的四个变量
    String driver="com.mysql.jdbc.Driver";
    //如果使用的是jdbc:mysql://127.0.0.1:3306/myschool;那么我们要注意必须将配置里面的远程访问打开
    String url="jdbc:mysql://localhost:3306/myschool";
    String userName="root";
    String userPwd="root";
    String sql="SELECT * from dept";
    //3.加载驱动
    Class.forName(driver);
    //可以使用DriverManager获取连接对象
    Connection conn=null;
    PreparedStatement pstmt=null;
    ResultSet rs=null;  //结果集合
    try {
      conn = DriverManager.getConnection(url, userName, userPwd);
      //通过连接对象Connection得到一个PreparedStatement对象,他可以帮助我们完成针对数据库的增删查改操作
      pstmt=conn.prepareStatement(sql);
      rs=pstmt.executeQuery();
      while(rs.next()) {
        //下面两种凡是的区别,一般使用第二种方式,第一种方式如果我现在调换了列的位置,那么我们要去修改下面的代码
        //第二种方式根据列名来获取值,那么我们不管怎么去修改列的位置,都不会影响到我们的取值
        int deptNo=rs.getInt(1);//通过索引取值
        String deptName=rs.getString("deptName");//通过列名
        String deptAddress=rs.getString("deptAddress");
        System.out.println("deptNo:"+deptNo+" deptName: "+deptName+" deptAddress: "+deptAddress);
      }
    } catch (SQLException e) {
      e.printStackTrace();
    }finally {
      try {
        if(rs!=null) {
          rs.close();
        }
        if(pstmt!=null) {
          pstmt.close();
        }
        if(conn!=null) {
          conn.close();
        }
      } catch (SQLException e) {
        e.printStackTrace();
      }
    }
  }
}

BaseDao

package com.etc.dao;
 //将增删改查这4个操作的共有语句整理进来
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class BaseDao {
    private static final String DRIVER="com.mysql.jdbc.Driver";
    //如果使用的是jdbc:mysql://127.0.0.1:3306/myschool;那么我们要注意必须将配置里面的远程访问打开
    private static final String URL="jdbc:mysql://localhost:3306/myschool";
    private static final String USERNAME="root";
    private static final String USERPWD="root";
    //获取连接对象
    public static Connection getConnection() {
      try {
        Class.forName(DRIVER);
      } catch (ClassNotFoundException e1) {
        e1.printStackTrace();
      }
      Connection conn=null;
      try {
        conn = DriverManager.getConnection(URL, USERNAME, USERPWD);
      } catch (SQLException e) {
        e.printStackTrace();
      }
      return conn;
    }
                                                                          //代表多个Object对象
    public static PreparedStatement setParam(Connection conn,String sql,Object...param) throws SQLException{
      PreparedStatement pstmt=null;
      pstmt=conn.prepareStatement(sql);
      for(int i=0;i<param.length;i++) {
        pstmt.setObject(i+1, param[i]);
      }
      return pstmt;
    }
    //增删改的通用方法
    public static int exeUpdate(PreparedStatement pstmt) throws SQLException  {
      int result=0;
        //增删改都是对数据库的记录进行更改,他们都是使用executeUpdate这个方法来完成,返回值都是受影响行数
      result=pstmt.executeUpdate();
      return result;
    }
    public static void closeAll(Connection conn,PreparedStatement pstmt,ResultSet rs) {
      try {
        if(pstmt!=null) {
          pstmt.close();
        }
        if(conn!=null) {
          conn.close();
        }
        if(rs!=null) {
          rs.close();
        }
      } catch (SQLException e) {
        e.printStackTrace();
      }
    }
}

DeptDao

package com.etc.dao;
import java.util.List;
import com.etc.entity.Dept;
/**
 * 部门Dao接口
 * @author GGBOOM
 *
 */
public interface DeptDao {
  /**
   * 添加
   * @param dept
   */
  void deptAdd(Dept dept);
  /**
   * 根据部门号删除
   * @param deptNo
   */
  void deptDel(int deptNo);
  /**
   * 根据部门号修改
   * @param dept
   */
  void deptUpdate(Dept dept);
  /**
   * 查询全部部门
   * @return
   */
  List<Dept> deptQuery();
}

DeptDaoImpl

package com.etc.dao.impl;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import com.etc.dao.BaseDao;
import com.etc.dao.DeptDao;
import com.etc.entity.Dept;
public class DeptDaoImpl implements DeptDao {
  @Override
  public void deptAdd(Dept dept) {
        String sql="INSERT INTO dept(deptName,deptAddress) VALUES(?,?)";
        Connection conn=null;
        PreparedStatement pstmt=null;
        try {
          conn = BaseDao.getConnection();
          pstmt=BaseDao.setParam(conn,sql, dept.getDeptName(),dept.getDeptAddress());
          //增删改都是对数据库的记录进行更改,他们都是使用executeUpdate这个方法来完成,返回值都是受影响行数
          int result=BaseDao.exeUpdate(pstmt);
          if(result>0) {
            System.out.println("插入成功!");
          }else {
            System.out.println("插入失败!");
          }
        } catch (SQLException e) {
          e.printStackTrace();
        }finally {
          BaseDao.closeAll(conn,pstmt,null);
        }
  }
  @Override
  public void deptDel(int deptNo) {
    //1.mysql-connector-java-5.1.39-bin.jar添加到构建路径
    //JDBC需要这个JAR包来完成我们对数据库的访问
    //jar包其实就是很多的字节码文件
    //2.连接数据库
    //连接数据库的四个变量
    String driver="com.mysql.jdbc.Driver";
    //如果使用的是jdbc:mysql://127.0.0.1:3306/myschool;那么我们要注意必须将配置里面的远程访问打开
    String url="jdbc:mysql://localhost:3306/myschool";
    String userName="root";
    String userPwd="root";
    String sql="delete from dept where deptNo=?";
    //3.加载驱动
    try {
      Class.forName(driver);
    } catch (ClassNotFoundException e1) {
      e1.printStackTrace();
    }
    //可以使用DriverManager获取连接对象
    Connection conn=null;
    PreparedStatement pstmt=null;
    try {
      conn = DriverManager.getConnection(url, userName, userPwd);
      //通过连接对象Connection得到一个PreparedStatement对象,他可以帮助我们完成针对数据库的增删查改操作
      pstmt=conn.prepareStatement(sql);
      pstmt.setInt(1, deptNo);
      //增删改都是对数据库的记录进行更改,他们都是使用executeUpdate这个方法来完成,返回值都是受影响行数
      int result=pstmt.executeUpdate();
      if(result>0) {
        System.out.println("删除成功!");
      }else {
        System.out.println("删除失败!");
      }
    } catch (SQLException e) {
      e.printStackTrace();
    }finally {
      try {
        if(pstmt!=null) {
          pstmt.close();
        }
        if(conn!=null) {
          conn.close();
        }
      } catch (SQLException e) {
        e.printStackTrace();
      }
    }
  }
  @Override
  public void deptUpdate(Dept dept) {
    //1.mysql-connector-java-5.1.39-bin.jar添加到构建路径
        //JDBC需要这个JAR包来完成我们对数据库的访问
        //jar包其实就是很多的字节码文件
        //2.连接数据库
        //连接数据库的四个变量
        String driver="com.mysql.jdbc.Driver";
        //如果使用的是jdbc:mysql://127.0.0.1:3306/myschool;那么我们要注意必须将配置里面的远程访问打开
        String url="jdbc:mysql://localhost:3306/myschool";
        String userName="root";
        String userPwd="root";
        String sql="UPDATE DEPT SET deptAddress=? , deptName=?  WHERE deptno=?";
        //3.加载驱动
        try {
          Class.forName(driver);
        } catch (ClassNotFoundException e1) {
          e1.printStackTrace();
        }
        //可以使用DriverManager获取连接对象
        Connection conn=null;
        PreparedStatement pstmt=null;
        try {
          conn = DriverManager.getConnection(url, userName, userPwd);
          //通过连接对象Connection得到一个PreparedStatement对象,他可以帮助我们完成针对数据库的增删查改操作
          pstmt=conn.prepareStatement(sql);
          pstmt.setString(1,dept.getDeptAddress());
          pstmt.setString(2,dept.getDeptName());
          pstmt.setInt(3, dept.getDeptNo());
          //增删改都是对数据库的记录进行更改,他们都是使用executeUpdate这个方法来完成,返回值都是受影响行数
          int result=pstmt.executeUpdate();
          if(result>0) {
            System.out.println("修改成功!");
          }else {
            System.out.println("修改失败!");
          }
        } catch (SQLException e) {
          e.printStackTrace();
        }finally {
          try {
            if(pstmt!=null) {
              pstmt.close();
            }
            if(conn!=null) {
              conn.close();
            }
          } catch (SQLException e) {
            e.printStackTrace();
          }
        }
  }
  @Override
  public List<Dept> deptQuery() {
    //1.mysql-connector-java-5.1.39-bin.jar添加到构建路径
        //JDBC需要这个JAR包来完成我们对数据库的访问
        //jar包其实就是很多的字节码文件
        //2.连接数据库
        //连接数据库的四个变量
        String driver="com.mysql.jdbc.Driver";
        //如果使用的是jdbc:mysql://127.0.0.1:3306/myschool;那么我们要注意必须将配置里面的远程访问打开
        String url="jdbc:mysql://localhost:3306/myschool";
        String userName="root";
        String userPwd="root";
        String sql="SELECT * from dept";
        List<Dept> list=new ArrayList<Dept>();
        //3.加载驱动
        try {
          Class.forName(driver);
        } catch (ClassNotFoundException e1) {
          e1.printStackTrace();
        }
        //可以使用DriverManager获取连接对象
        Connection conn=null;
        PreparedStatement pstmt=null;
        ResultSet rs=null;
        try {
          conn = DriverManager.getConnection(url, userName, userPwd);
          //通过连接对象Connection得到一个PreparedStatement对象,他可以帮助我们完成针对数据库的增删查改操作
          pstmt=conn.prepareStatement(sql);
          rs=pstmt.executeQuery();
          while(rs.next()) {
            //下面两种凡是的区别,一般使用第二种方式,第一种方式如果我现在调换了列的位置,那么我们要去修改下面的代码
            //第二种方式根据列名来获取值,那么我们不管怎么去修改列的位置,都不会影响到我们的取值
            int deptNo=rs.getInt(1);//通过索引取值
            String deptName=rs.getString("deptName");//通过列名
            String deptAddress=rs.getString("deptAddress");
            System.out.println("deptNo:"+deptNo+" deptName: "+deptName+" deptAddress: "+deptAddress);
            list.add(new Dept(deptNo,deptName,deptAddress));
          }
        } catch (SQLException e) {
          e.printStackTrace();
        }finally {
          try {
            if(rs!=null) {
              rs.close();
            }
            if(pstmt!=null) {
              pstmt.close();
            }
            if(conn!=null) {
              conn.close();
            }
          } catch (SQLException e) {
            e.printStackTrace();
          }
        }
    return list;
  }
}

TestDept

package com.etc.option;
import com.etc.dao.DeptDao;
import com.etc.dao.impl.DeptDaoImpl;
import com.etc.entity.Dept;
public class TestDept {
    public static void main(String[] args) {
      DeptDao dd=new DeptDaoImpl();//实例了对应的接口
      //新增
      Dept dept=new Dept("公关部","北京");
      dd.deptAdd(dept);
      //修改
//      Dept dept=new Dept(7,"公关部1","上海");
//      dd.deptUpdate(dept);
      //删除
      //dd.deptDel(7);
      //查询
    /*  List<Dept> list=dd.deptQuery();
      for(Dept dept1:list) {
        System.out.println(dept1);
      }*/
    }
}

不懂的朋友仔细看看我的注释,我这注释写的相当良心了。

老铁,如果确实对你有帮助请点个免费的赞鼓励一下

白嫖不好,创作不易。各位的点赞就是我创作的最大动力,如果我有哪里写的不对,欢迎评论区留言进行指正,我们下篇文章见!


相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
23天前
|
人工智能 JavaScript 关系型数据库
【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
83 14
【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
|
26天前
|
人工智能 JavaScript 安全
【01】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-需求改为思维导图-设计数据库-确定基础架构和设计-优雅草卓伊凡商业项目实战
【01】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-需求改为思维导图-设计数据库-确定基础架构和设计-优雅草卓伊凡商业项目实战
86 13
【01】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-需求改为思维导图-设计数据库-确定基础架构和设计-优雅草卓伊凡商业项目实战
|
20天前
|
存储 缓存 Java
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
72 3
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
|
2月前
|
SQL Java 关系型数据库
使用 JDBC 实现 Java 数据库操作
JDBC(Java Database Connectivity)是 Java 提供的数据库访问技术,允许通过 SQL 语句与数据库交互。本文详细介绍了 JDBC 的使用方法,包括环境准备、编程步骤和完整示例。
155 7
|
2月前
|
SQL Java 数据库连接
【潜意识Java】MyBatis中的动态SQL灵活、高效的数据库查询以及深度总结
本文详细介绍了MyBatis中的动态SQL功能,涵盖其背景、应用场景及实现方式。
124 6
|
2月前
|
SQL Java 数据库连接
【潜意识Java】Java中JDBC过时方法的替代方案以及JDBC为什么过时详细分析
本文介绍了JDBC中一些常见过时方法及其替代方案。
48 5
|
2月前
|
前端开发 Java 数据库连接
Java后端开发-使用springboot进行Mybatis连接数据库步骤
本文介绍了使用Java和IDEA进行数据库操作的详细步骤,涵盖从数据库准备到测试类编写及运行的全过程。主要内容包括: 1. **数据库准备**:创建数据库和表。 2. **查询数据库**:验证数据库是否可用。 3. **IDEA代码配置**:构建实体类并配置数据库连接。 4. **测试类编写**:编写并运行测试类以确保一切正常。
78 2
|
3月前
|
SQL Java 数据库连接
JDBC编程安装———通过代码操控数据库
本文,教你从0开始学习JBCD,包括驱动包的下载安装调试设置,以及java是如何通过JBDC实现对数据库的操作,以及代码的分析,超级详细
|
5天前
|
存储 监控 Java
【Java并发】【线程池】带你从0-1入门线程池
欢迎来到我的技术博客!我是一名热爱编程的开发者,梦想是编写高端CRUD应用。2025年我正在沉淀中,博客更新速度加快,期待与你一起成长。 线程池是一种复用线程资源的机制,通过预先创建一定数量的线程并管理其生命周期,避免频繁创建/销毁线程带来的性能开销。它解决了线程创建成本高、资源耗尽风险、响应速度慢和任务执行缺乏管理等问题。
109 60
【Java并发】【线程池】带你从0-1入门线程池
|
1天前
|
Java 调度
【源码】【Java并发】【线程池】邀请您从0-1阅读ThreadPoolExecutor源码
当我们创建一个`ThreadPoolExecutor`的时候,你是否会好奇🤔,它到底发生了什么?比如:我传的拒绝策略、线程工厂是啥时候被使用的? 核心线程数是个啥?最大线程数和它又有什么关系?线程池,它是怎么调度,我们传入的线程?...不要着急,小手手点上关注、点赞、收藏。主播马上从源码的角度带你们探索神秘线程池的世界...
20 0
【源码】【Java并发】【线程池】邀请您从0-1阅读ThreadPoolExecutor源码