zoukankan      html  css  js  c++  java
  • Mybatis用到的设计模式和常用类原理

    • 功能:将java对象映射城sql语句,将结果集转化成java对象。将容易变化的放在配置文件中,不变的通过Mybatis管理。

    • 完成:1.根据JDBC规范建立数据库的连接;

      2.通过反射打通java对象与数据库参数转化的关系。

    • 原理:动态代理和反射机制。

    动态代理中用到JDK动态代理和CGLIB代理。

    这两者的区别是,JDK动态代理是接口的,CGLIB代理是对于类的。

    Mybatis中这两种代理都用到过,Mapper中用到的是JDK动态代理在延迟加载的时候用到CGLIB代理

    1.读取配置到Configuration对象,并使用相应对象去创建SqlSessionFactory;

    2.通过SqlSessionFactory拿到SqlSession进行增删改查方法。

    SqlSessionDaoSupport:

    1、SqlSessionDaoSupport 是 一 个 抽象 的支 持 类, 用来 为你 提供 SqlSession 。 

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    @Autowired
    @Override
    public void setSqlSessionFactory(SqlSessionFactory sqlSessionFactory) {
        // TODO Auto-generated method stub
        super.setSqlSessionFactory(sqlSessionFactory);
    }
     
    //spring配置
        <!-- 配置sqlSessionFactory -->
        <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
            <property name="dataSource" ref="dataSource"/>
            <property name="configLocation" value="classpath:mybatis.cfg.xml"></property>
        </bean>
    <wiz_tmp_tag class="wiz-block-scroll">
     

    2、调 用 getSqlSession()方法你会得到一个 SqlSessionTemplate,之后可以用于执行 SQL 方法

    3、持久层未继承SqlSessionDaoSupport,需要注入类

    1
    2
    @Autowired
    private SqlSessionTemplate sqlSession;

    且配置

    1
    2
    3
    <bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
        <constructor-arg index="0" ref="sqlSessionFactory"/>
    </bean>

    涉及涉及模式:

    Builder模式,例如SqlSessionFactoryBuilder、XMLConfigBuilder、XMLMapperBuilder、XMLStatementBuilder、CacheBuilder;

    工厂模式,例如SqlSessionFactory、ObjectFactory、MapperProxyFactory;

    单例模式,例如ErrorContext和LogFactory;

    代理模式,Mybatis实现的核心,比如MapperProxy、ConnectionLogger,用的jdk的动态代理;还有executor.loader包使用了cglib或者javassist达到延迟加载的效果;

    组合模式,例如SqlNode和各个子类ChooseSqlNode等;

    模板方法模式,例如BaseExecutor和SimpleExecutor,还有BaseTypeHandler和所有的子类例如IntegerTypeHandler;

    适配器模式,例如Log的Mybatis接口和它对jdbc、log4j等各种日志框架的适配实现;

    装饰者模式,例如Cache包中的cache.decorators子包中等各个装饰者的实现;

    迭代器模式,例如迭代器模式PropertyTokenizer;

     

  • 相关阅读:
    Netty快速入门(09)channel组件介绍
    Netty快速入门(08)ByteBuf组件介绍
    Netty快速入门(07)Netty入门例子
    Netty快速入门(06)Netty介绍
    Netty快速入门(05)Java NIO 介绍-Selector
    Netty快速入门(04)Java NIO 介绍-Channel
    Netty快速入门(03)Java NIO 介绍-Buffer
    Netty快速入门(02)Java I/O(BIO)介绍
    Netty快速入门(01)Linux I/O模型介绍
    老虎集团【4面】
  • 原文地址:https://www.cnblogs.com/shuchen007/p/9193179.html
Copyright © 2011-2022 走看看