MyBatis对比JDBC的提升

目录

1.JDBC是什么

2.JDBC程序存在的问题

3.MyBatis的简化:

1.JDBC是什么

JDBC:(Java DataBase Connectivity),就是使用Java语言操作关系型数据库的一套API

Java程序想要去操作MySQL、Oracle、SQL Server这样的关系型数据库,就得通过Sun公司提供的JDBC这套API。因为不同的数据库产品底层实现有很大差异,操作的方式也就会存在差异。

那么sun公司提供的JDBC——操作关系型数据库的一套API,是如何操作所有的关系型数据库的?

因为jdbc只是一套规范、一套接口,并没有提供具体的实现,具体的实现由各个厂商进行提供,他们最清楚自家数据库的底层实现细节或者操作方式。

而我们编写java程序的时候,只需要面向接口编程,使用JDBC提供的接口来操作就可以,通过引入进来的各个JDBC厂商提供的实现来操作数据库。他们提供的JDBC规范的实现,称为数据库的驱动

 比如这个引入进来的MySQL驱动,就是MySQL厂商提供的JDBC的实现。

简单的介绍了JDBC之后做一个小总结

 JDBC操作数据库的代码:

public class Test {

    @org.junit.Test
    public void testJdbc() throws Exception {

        // 1. 注册驱动
        Class.forName("com.mysql.cj.jdbc.Driver");

        // 2. 获取连接对象
        //要操作数据库,就要程序和数据库建立连接
        String url = "jdbc:mysql://localhost:3306/mybatis";
        String username = "root";
        String password = "1234";
        Connection connection = DriverManager.getConnection(url, username, password);

        // 3. 获取执行 SQL 的对象 statement, 执行 SQL, 返回结果给结果集对象
        String sql = "SELECT * FROM user";
        Statement statement = connection.createStatement();
        ResultSet resultSet = statement.executeQuery(sql);

        // 4. 解析结果集对象,需要逐个解析全部字段,封装结果数据
        List<User> userList = new ArrayList<>();
        while (resultSet.next()) {
            int id = resultSet.getInt("id");
            String name = resultSet.getString("name");
            short age = resultSet.getShort("age");
            short gender = resultSet.getShort("gender");
            String phone = resultSet.getString("phone");
            User user = new User(id, name, age, gender, phone);
            userList.add(user);
        }

        // 5. 释放资源
        resultSet.close();
        statement.close();
        connection.close();

        // 6. 打印结果
        userList.forEach(System.out::println);
    }
}

2.JDBC程序存在的问题

1.对于注册驱动和获取连接这两步,因为数据会经常发生变动,而jdbc的写死的硬编码会导致,一旦这部分内容发生变化,Java代码要重新编译打包之后才能运行。

2.对于解析结果封装结果这一块,解析结果时需要一个字段一个字段地解析,非常繁琐臃肿。

3.在执行sql语句之前,需要获取连接,sql语句执行完后,接马上释放了资源,频繁获取连接释放连接会造成资源浪费,从而造成性能降低。

Mybatis是一个持久层框架,用于简化jdbc的开发。

3.MyBatis的简化:

1.在Mybatis中,将数据库连接的四要素(驱动类名称、数据库连接的url、连接数据库的用户名、连接数据库的密码)直接配置在了properties配置文件当中,之后如果发生变动,就不用操作Java代码,直接操作配置文件就可以了。

2.在Mybatis中,并没有解析结果,会自动将查询的结果封装到集合中,查询返回的每一个结果都被封装为对象,而所有对象又会封装到一个集合当中,整个过程都是自动化进行。

3.在Mybatis中,配置数据库连接信息的时候,所有配置项的前缀都是spring.datasource(数据源)spring底层会自动采用数据库连接池技术来统一管理和分配这些连接,这个连接指的是JDBC里的Connection对象,有了连接池,每次执行sql语句只需要从连接池当中获取一个连接,然后执行sql语句,执行完毕后再把这个连接归还给连接池,做到连接的复用,从而避免繁获取连接释放连接造成的资源浪费。

 使用springboot整合mybatis进行数据库操作的时候,主要关注两部分就好

1.再application.properties中关于mybatis的相关配置

2.mapper接口以及所定义的sql语句

  • 9
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值