MyBatis是怎么来的

这篇文章主要介绍“MyBatis是怎么来的”,在日常操作中,相信很多人在MyBatis是怎么来的问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MyBatis是怎么来的”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

站在用户的角度思考问题,与客户深入沟通,找到于洪网站设计与于洪网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:网站设计、成都做网站、企业官网、英文网站、手机端网站、网站推广、空间域名、网页空间、企业邮箱。业务覆盖于洪地区。

JDBC原生操作

在早期开发还没有ORM框架时我们要操作数据库都是通过JDBC来操作。

JDBC测试代码:

/**
 * 原生操作JDBC方式
 * @Author: maomao
 * @Date: 2021-04-07 10:59
 */
public class JdbcTest {

    public static final String URL = "jdbc:MySQL://127.0.0.1:3306/data_test?useUnicode=true&characterEncoding=utf-8&rewriteBatchedStatements=true";
    public static final String USER_NAME = "root";
    public static final String PASSWORD = "123456";

    @Test
    public void testJdbc(){
        Connection connection = null;
        Statement statement = null;
        ResultSet resultSet = null;

        try {
            //打开连接
            connection = DriverManager.getConnection(URL,USER_NAME,PASSWORD);

            //执行SQL
            statement = connection.createStatement();
            String sql = "select * from user_department where id = 1";
            resultSet = statement.executeQuery(sql);

            //获取结果集,并封装到java对象中
            while (resultSet.next()){
                User user = new User();
                user.setId(resultSet.getLong("id"));
                user.setName(resultSet.getString("name"));
                user.setAge(resultSet.getInt("age"));
                System.out.println(user);
            }
            //后续使用逻辑。。。。

        }catch (SQLException e){
            e.printStackTrace();
        }finally {
            //关闭资源
            try {
                if (resultSet != null) resultSet.close();
            } catch (SQLException se2) {
            }
            try {
                if (statement != null) statement.close();
            } catch (SQLException se2) {
            }
            try {
                if (connection != null) connection.close();
            } catch (SQLException se) {
                se.printStackTrace();
            }
        }
    }
}

主要分为以下几步:

  1. 注册数据库驱动

  2. 获取一个Connection连接

  3. 创建一个Statement对象

  4. 执行execute()方法执行sql,获得ResultSet结果集

  5. 通过ResultSet获取数据,给POJO赋值,转为java对象

  6. 最后关闭数据库相关资源,包括ResultSet、Statement、Connection

如果你 有幸接触过一些早期的老项目,可能会在项目Dao层看到很多这样的操作。

好一点的会将数据库这些操作做一个工具封装,不好的你会看到每个查询方法中就会有类似以上测试代码一样的内容。

你可以想象一下现在每个常规的数据库操作,比如byId()、save()、update()等等这些方法在以前都包装在类似上边测试代码中的样子(瑟瑟发抖)。

ORM框架

ORM(Object Relational Mapping)也就是对象与关系映射

MyBatis是怎么来的

在早期诞生的比较主流的一个ORM框架是Hibernate,在2001年时诞生了第一个版本。

它帮我们解决了JDBC时期复杂的对象关系映射问题,简化了数据库开发操作。让开发人员无需再关注数据库连接、对象与数据库表的映射关系转换问题。所以早期主流开发J2EE是从SSH(struts + spring + hibernate)开始的。

hibernate本身功能非常强大,有自己的查询语法HQL可以通过操作对象关系来生成对应的SQL语句,也可以根据数据库方言生成兼容各数据库场景的SQL,所以移植性好。自动管理连接资源,还提供了缓存机制。

所以hibernate毫无疑问成为了当时J2EE开发时的主流ORM框架。

但Hibernate在业务复杂的项目中也存在一些问题:

  1. 需要学习新的HQL语法

  2. 自动生成SQL的方式,如果需要基于SQL去做一些优化的话,非常困难,导致性能优化是一个问题。

  3. 不支持动态SQL,无法根据条件自动生成SQL

基于以上问题,我们需要一个更加灵活的框架。此时就诞生了MyBatis(早期叫iBatis)。

MyBatis

MyBatis官网地址

”半自动化“的ORM框架MyBatis就解决了上边几个问题。”半自动化“是相当于Hibernate全自动化来说的。它的封装程度没有Hibernate那么高,不会自动生成全部的SQL语句,主要解决的是SQL和对象的映射问题。

在MyBatis里,sql和代码是分离的,所以会写SQL基本上就会用MyBatis,没有额外的学习成本。

所以J2EE又迎来了几次架构变更

  • SSI (Struts2 + Spring + iBatis)

  • SSM(Spring MVC + Spring + MyBatis)

MyBatis凭借小巧、简单易学、灵活、sql与代码解耦等特点慢慢取代了Hibernate成为主流ORM框架直到现在。

MyBatis是怎么来的

到此,关于“MyBatis是怎么来的”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注创新互联网站,小编会继续努力为大家带来更多实用的文章!


分享文章:MyBatis是怎么来的
URL网址:http://ybzwz.com/article/jgsdoi.html