zoukankan      html  css  js  c++  java
  • 自定义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框架代码实现,敬请请期待~

  • 相关阅读:
    关于删除表记录 与 清空表记录
    alter table,复制, 单表查询
    表之间的关系
    表的约束条件
    表的数据类型
    创建表的完整语法
    MYSQL基本语句
    MYSQL安装及环境搭建
    支付宝二次封装、订单模块与表分析、订单模块接口分析、支付接口、重写序列化类的create方法、前后台回调接口配置、前台生成订单并跳转、前台支付成功页面、支付宝get回调参数、同步异步回调接口、上线前准备
    区间过滤、课程主页前端、课程详情页前端、课程单查接口、章节分类接口、七牛云视频托管、后台搜索接口、前台搜索页面完成、沙箱环境
  • 原文地址:https://www.cnblogs.com/wxhao/p/14136185.html
Copyright © 2011-2022 走看看