Mybatis学习

Posted 王小花flower

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mybatis学习相关的知识,希望对你有一定的参考价值。

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学习的主要内容,如果未能解决你的问题,请参考以下文章

markdown [mybatis参考]关于mybatis #mybatis的一些片段

Mybatis 学习笔记总结

Mybatis学习笔记:动态SQL

SSM-MyBatis-05:Mybatis中别名,sql片段和模糊查询加getMapper

mybatis动态sql片段与分页,排序,传参的使用

MyBatis动态SQL标签用法