美文网首页
MyBatis(1)入门案例与自定义框架

MyBatis(1)入门案例与自定义框架

作者: 机智的老刘明同志 | 来源:发表于2020-01-25 20:36 被阅读0次

1.简介
    1.1 三层架构     
    1.2 ORM    
    1.3 持久层技术解决方案   
2.使用IDEA搭建Mybatis入门案例    
    2.1 新建maven工程并导入依赖
    2.2 创建uer表,user实体类,dao层接口IUserDao
    2.3 resources目录下创建mybatis配置文件SqlMapConfig.xml
    2.4 每个dao创建独立的sql映射文件IUserDao.xml
    2.5 单元测试
3.入门案例分析
    3.1设计模式分析
    3.2 执行查询所有分析
4.自定义Mybatis框架


1.简介:

    1.1 三层架构:

        表现层(UI),业务逻辑层(BLL),数据访问层(DAL)

    1.2 ORM: 

        对象关系映射,实体类和数据库表一一对应,不需要操作数据库表,操作表对应的实体类对象即可

    1.3 持久层技术解决方案:

        JDBC:一种规范和接口,面向sql (规范)(Connection   PreparedStatement    ResultSet)
        Spring的JdbcTemplate:Spring中对jdbc简单封装 (工具类)
        Apache中的DButils:对jdbc简单封装(工具类)
        JPA:一种ORM规范,使应用程序以统一的方式访问持久层(规范)
        Hibernate:全自动全映射orm框架,复杂的sql需要额外使用HQL,不灵活(框架)
        MyBatis:半自动orm框架,同Hibernate相比可在配置文件中配置sql(框架)


2.使用IDEA搭建Mybatis入门案例

    2.1 新建maven工程并导入依赖

        当然也可以导入日志插件log4j和单元测试插件junit

pox.xml

    2.2 创建uer表,user实体类,dao层接口IUserDao

        实体类user中的属性要与user表中的字段一一对应,然后生成getter,setter,toString(IDEA中右键选择generate)

IUserDao代码

    2.3 resources目录下创建mybatis配置文件SqlMapConfig.xml

        配置文件的名称非固定       

SqlMapConfig.xml

    2.4 每个dao创建独立的sql映射文件:IUserDao.xml

IUserDao.xml

    2.5 单元测试

3.入门案例分析

    3.1 设计模式分析

    3.2 执行查询所有分析

        首先,MyBatis会使用dom4j读取配置文件,解析xml,然后进行如下操作:
        1.根据配置文件信息,创建Connection对象 
        2.获取预处理对象PreparedSatement
            conn.prepareSatement(sql);   ->从IUserDao.xml中拿到sql
        3.执行查询  ResultSet resultSet = preparedStatement.executeQuery();
        4.遍历结果集,用于封装
            List<E> list = new ArrayList();
            while(resultSet .next()){         
                // 进行封装,将每个rs的内容都添加到element中
                E element = (E) class.forName("配置的全限定类名").newInstance();     
                // 因为表中列名与实体属性是一致的,我们可以把表的列名看成实体类的属性名
                // 可以通过反射的方式根据名称获取每个属性,并把值赋进去
                list.add(element); //之后把element追加到list中
            }
        5 return list

4. 自定义Mybatis框架:

        1.使用类加载器读取配置文件的类(dom4j)

        2.使用SqlSessionFactoryBuilder(构建者模式)创建一个实现SqlSessionFactory工厂的DefaultSqlSessionFactory类
        这里SqlSessionFactory读取SqlMapConfig.xml中连接数据库和mapper映射信息。用来生产出真正操作数据库的SqlSession对象。

        3.DefaultSqlSession实现SqlSession接口。SqlSession对象有两大作用:
            1生成接口代理对象 
            2定义通用增删改查方法

        4.SqlSession
        作用1:生成接口代理对象。在SqlSessionImpl对象的getMapper方法中首先使用SqlSessionFactory读取的数据库连接信息创建Connection对象。接下来通过jdk代理模式创建出代理对象作为getMapper方法的返回值。这里主要工作是在创建代理对象时,第3个参数处理类里面得到的sql语句,并执行curd操作
        作用2:定义通用增删改查方法。在SqlSessionImpl对象中提供的selectList()方法(mybatis中还有selectOne与insert等方法)这些方法也分为两步:使用SqlSessionFactory读取的数据库连接信息创建jdbc的Connection对象。第二直接得到sql语句,使用jdbc的Connection对象进行对应的curd操作

        此处是一个InvocationHandler的接口,我们需要写一个该接口的实现类,在实现类中调用selectList()

        5.我们要对返回的数据库结果集进行封装,变成java对象返回给调用者。所以我们还必须要知道调用者所需要的返回类型

相关文章

  • MyBatis(1)入门案例与自定义框架

    1.简介1.1 三层架构 1.2 ORM1.3 持久层技术解决方案 2.使用IDEA搭建Mybatis入门案例 ...

  • MyBatis学习笔记(2)

    Mybatis入门案例中设计模式分析 自定义Mybatis分析-执行查询所有分析 mybatis在使用代理dao的...

  • 新手如何快速简单自定义MyBatis框架

    MyBatis入门到自定义MyBatis框架 第一个 MyBatis 程序(XML配置) 在上一篇中,简单总结了一...

  • MyBatis入门

    MyBatis入门 MyBatis是一个第一类持久性框架,支持自定义SQL,存储过程和高级映射。MyBatis几乎...

  • Mybatis快速入门

    Mybatis 学习内容 Mybatis框架的简单入门 Mybatis框架基本的使用 Mybatis框架的深入和多...

  • 01.Mybatis课程介绍及环境搭建

    1.mybatis课程介绍 mybatis框架,共四天 第一天:mybatis入门 mybatis的概述 myba...

  • Mybatis入门教程(一)

    Mybatis入门 Mybatis简介 Mybatis是一个持久层(Dao)框架,是一套完整的与数据库交互的解决方...

  • Mybatis入门

    引自: MyBatis 3 | 入门 1. 简介 MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存...

  • Mybatis

    mybatis入门案例(未整合spring) mybatis在代理dao的方式实现增删改查时做什么事情呢? 1、创...

  • Mybatis----(1)

    主要内容1、对原生态jdbc程序(单独使用jdbc开发)问题总结2、mybatis框架原理3、mybatis入门程...

网友评论

      本文标题:MyBatis(1)入门案例与自定义框架

      本文链接:https://www.haomeiwen.com/subject/cdelnctx.html