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

Mybatis学习

时间:2020-03-06 01:26:00      阅读:90      评论:0      收藏:0      [点我收藏+]

标签:lazyload   owb   ogg   resource   public   map   文件   不同类   iba   

Mybatis是什么?

一个ORM框架, Object Relational Mapping,用于实现面向对象语言里不同类型系统的数据之间的转换

官方文档:https://mybatis.org/mybatis-3/

在官方文档中 getting started介绍的示例,快速入门

1.获取一个SqlSessionFactory,两种方式,一种通过XML方式,通常也都是使用这种方式,还有一种是通过非XML的方式

2.通过 SqlSessionFactory 获取一个SqlSession

3.通过执行映射的sql获取到结果集

 

数据库源 --》sql语句--》操作执行

数据库源:Driver、url、UserName、Password

sql语句:select、Inser、Update、Delete

操作执行:Connection、PrepareStatement、ResultSet

 

Mybatis如何解析数据库源:

org.mybatis.spring.SqlSessionFactoryBean#buildSqlSessionFactory

源码中的这个方法中 根据Resource 的 configLocation变量,通过XMLConfigBuilder 去解析本地的xml文件,最终得到 Configuration configuration,

 protected SqlSessionFactory buildSqlSessionFactory() throws IOException {

    Configuration configuration;

    XMLConfigBuilder xmlConfigBuilder = null;
    if (this.configuration != null) {
      configuration = this.configuration;
      if (configuration.getVariables() == null) {
        configuration.setVariables(this.configurationProperties);
      } else if (this.configurationProperties != null) {
        configuration.getVariables().putAll(this.configurationProperties);
      }
    } else if (this.configLocation != null) {
      xmlConfigBuilder = new XMLConfigBuilder(this.configLocation.getInputStream(), null, this.configurationProperties);
      configuration = xmlConfigBuilder.getConfiguration();
    } else {
      if (LOGGER.isDebugEnabled()) {
        LOGGER.debug("Property ‘configuration‘ or ‘configLocation‘ not specified, using default MyBatis Configuration");
      }
      configuration = new Configuration();
      if (this.configurationProperties != null) {
        configuration.setVariables(this.configurationProperties);
      }
    }

 

这个Configuration 中有Environment environment 属性,

package org.apache.ibatis.session;public class Configuration {
    protected Environment environment;
    protected boolean safeRowBoundsEnabled;
    protected boolean safeResultHandlerEnabled;
    protected boolean mapUnderscoreToCamelCase;
    protected boolean aggressiveLazyLoading;

 

这个environment中可以看到有三个属性:

public final class Environment {
    private final String id;
    private final TransactionFactory transactionFactory;
    private final DataSource dataSource;

能看到 有dataSource属性,那么就相当于Java拿到了数据源的配置;

 

Mybatis学习

标签:lazyload   owb   ogg   resource   public   map   文件   不同类   iba   

原文地址:https://www.cnblogs.com/wangflower/p/12424026.html

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