谈谈JDBC以及mybatis框架

理解JDBC

jdbc本质上是java官方定义的一组接口(Drive/Connect/Statement/ResultSet等),然后让各个数据库厂商去向用户提供各自的接口实现类,这些接口规定了一种行为——java语言如何操作数据库实例。用户可以基于这套接口去面向接口编程,作为用户的程序员只需要注册相应的驱动即可。
而一个JDBC打开的连接,最终也会映射为一条数据库连接(mysql客户端与mysql服务器之间建立的TCP连接)

JDBC流程

JDBC的流程可以概括为:
【1】注册数据库驱动
【2】拿到连接connect对象
【3】拿到执行sql语句的statement对象
【4】执行sql语句得到结果集resultSet对象

        Class.forName("com.mysql.cj.jdbc.Driver");
        Connection root = DriverManager.getConnection("jdbc:mysql://localhost:3306/mysql?useSSL=false", "root", "123456");
        String sql ="select * from user";
        Statement statement = root.createStatement();
        ResultSet resultSet = statement.executeQuery(sql);
        statement.close();
        root.close();

获取connect对象的方式有两种,一种是直接new对应的Driver对象,然后使用driver对象的connect方法去获得,而另一种更加常用的方式是使用DriverManager的静态方法getConnection去获取

注册驱动原理

注册注册,听着很玄乎,其实说白了就是driverManager这个类维护了一个集合,这个集合装载的是Driver对象(DriverInfo是对Driver的封装,内部组合了DrIver对象,内部还维护了一个DriverAction类型,可以指定取消注册的逻辑)。而注册说白了就是往这个容器中添加Driver的过程

    private final static CopyOnWriteArrayList<DriverInfo> registeredDrivers = new CopyOnWriteArrayList<>();

当我们forName主动将一个类加载如内存,就会触发类初始化,执行该类的static块。这个块内执行的逻辑其实就是new一个对象,然后注册进driverManager的Driver集合中。

    static {
   
        try {
   
            DriverManager.registerDriver(new 
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值