码迷,mamicode.com
首页 > 其他好文 > 详细

Mybatis常用类原理

时间:2018-06-17 18:01:06      阅读:221      评论:0      收藏:0      [点我收藏+]

标签:模板方法模式   nan   ESS   nta   配置文件   space   add   code   erro   

 

  • 功能:将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;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Mybatis常用类原理

标签:模板方法模式   nan   ESS   nta   配置文件   space   add   code   erro   

原文地址:https://www.cnblogs.com/shuchen007/p/9193179.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!