自定义Mybatis框架实现

本章将开启mybatis系列

mybatis介绍

mybatis 是一个优秀的基于 java 的持久层框架,它内部封装了 jdbc,使开发者只需要关注 sql 语句本身, 而不需要花费精力去处理加载驱动、创建连接、创建 statement 等繁杂的过程。

mybatis 通过 xml 或注解的方式将要执行的各种 statement 配置起来,并通过 java 对象和 statement 中 sql 的动态参数进行映射生成最终执行的 sql 语句,最后由 mybatis 框架执行 sql 并将结果映射为 java 对象并 返回。

采用 ORM 思想解决了实体和数据库映射的问题,对 jdbc 进行了封装,屏蔽了 jdbc api 底层访问细节,使我 们不用与 jdbc api 打交道,就可以完成对数据库的持久化操作。 为了我们能够更好掌握框架运行的内部过程,并且有更好的体验,

下面我们将从自定义 Mybatis 框架开始来 学习框架。此时我们将会体验框架从无到有的过程体验,也能够很好的综合前面阶段所学的基础。

三层架构

 

 持久层总图:

 

 

入门第一个实例:

测试类主方法:

    public static void main(String[] args) throws IOException {
        //1.读取配置文件
        InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");  //读取配置文件的常用方法有两种:第一,使用类加载器;第二,使用servletContext对象的getRealPath()方法
        //2.创建 SqlSessionFactory 的构建者对象
        SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();//创建工厂mybatis使用了构建者模式
        //3.使用构建者创建工厂对象 SqlSessionFactory
        SqlSessionFactory factory = builder.build(in);//builder就是构建者        构建者模式:把对像的创建细节隐藏
        //4.使用 SqlSessionFactory 生产 SqlSession 对象
        SqlSession session = factory.openSession();  //生产SqlSession使用了工厂模式,工厂模式的优势:解耦(降低类间的依赖关系)
        //5.使用 SqlSession 创建 dao 接口的代理对象
        IUserDao userDao = session.getMapper(IUserDao.class);  //代理模式:不修改源码的基础上对已有的方法增强
        //6.使用代理对象执行查询所有方法
        List<User> users = userDao.findAll();
        for (User user : users){
            System.out.println(user);
        }
        //7.释放资源
        session.close();
        in.close();
    }

mybatis  mapper配置文件的要求

 mybatis分析自定义mybatis框架:

1.涉及知识点:

我们将使用前面所学的基础知识来构建一个属于自己的持久层框架,将会涉及到的一些知识点:工厂模式 (Factory 工厂模式)、构造者模式(Builder 模式)、代理模式,反射,自定义注解,注解的反射,xml 解析, 数据库元数据,元数据的反射等。

2. 自定义Mybatis的分析:

mybatis在使用代理dao的方式实现增删改查时做什么事呢?

只有两件事:第一,创建代理对象; 第二,在代理对象中调用selectList

数据库配置文件:-------->  解析配置文件,此处用dom4j解析xml技术

 

 下一节将是自定义mybatis框架代码实现,敬请请期待~

 

posted @ 2020-12-14 22:51  wxmax  阅读(306)  评论(0编辑  收藏  举报