【mybatis源码系列一:JDBC以及ORM框架简介】

mybatis概述

MyBatis 主要帮助开发人员屏蔽底层重复性的原生 JDBC代码。 MyBatis 通过映射配置文件或相应注解将 ResultSet 映射为 Java 对象,其映射规则可以嵌套其他映射规则以及子查询,从而实现复杂的映射逻辑,也可以实现 对多、多对多映射以及双向映射。
相较于 Hibernate, MyBatis 更加轻量级,可控性也更高,在使用 MyBatis 时我们直接在映射配置文件中编写待执行的原生 SQL 语句,这就给了我们直接优化 SQL 语句的机会,让 SQL语句选择合适的索引,能更好地提高系统的性能,比较适合大数据量、高并发等场景。

JDBC概述

JDBC Java 与数据库交互的统 API,jdbc有一套标准格式化的操作来与数据库互动。

  1. 注册数据库驱动 ,明确指定数据库 URL 地址、数据库用户名、密码等连接信息
  2. 通过 DriverManager 打开数据库连接
  3. 通过数据库连接创建 Statement 对象
  4. 通过 Statement 对象执行 SQL 语句,得到 ResultSet 对象
  5. 通过 ResultSet 读取数据,并将数据转换成 JavaBean 对象
  6. 关闭 ResultSet Statement 对象以及数据库连接,释放相关资源。
//加载驱动
        Class.forName("com.mysql.cj.jdbc.Driver");
        //输入url、用户名、密码创建连接
        Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/demo?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai", "root", "123456");
        //sql查询语句
        String sql = "select * from account where name='" + "zhangsan" + "' and password = '" + "123" + "';";
        Statement statement = connection.createStatement();
        //执行查询语句
        ResultSet resultSet = statement.executeQuery(sql);
        //结果遍历
        while (resultSet.next()) {
            Object id = resultSet.getObject("id");
            Object name = resultSet.getObject("name");
            Object password = resultSet.getObject("password");
            Object balance = resultSet.getObject("balance");
            System.out.println(id + "-" + name + "-" + password + "-" + balance);
        }
        //关闭资源
        resultSet.close();
        statement.close();
        connection.close();

其中除了sql ,返回对象,查询类型等关键信息变化,大部门操作都是相同的。为了消除重复的代码,ORM框架应运而生,我们所要学习的就是mybatis如何优雅的屏蔽大部分重复代码。

mybatis整体架构

首先用《mybatis技术内幕》里的流程图来给大家看下。我们只要搞清几个组件的功能大概就可以搞懂整个流程干了什么了。
在这里插入图片描述
调用流程先通过SqlSession , Executor 组件 然后 通过 StatementHandler 里面的ParameterHandler处理 访问数据库后 通过ResultSetHandler处理result 最后返回StatementHandler来得到结果。这样流程是否就清晰了呢?

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值