mybatis介绍

Mybatis

  • 支持定制SQL、存储过程的持久层框架,减少JDBC模板代码,手动设置参数以及获取结果集
  • MyBatis 可以对配置和原生Map使用简单的 XML 或注解
  • 将JPO映射成数据库中的记录

Mybatais框架结构

  • API接口层:接受用户的请求,然后调用数据处理层,完成数据处理
  • 数据处理层:负责SQL查找、SQL解析、SQL执行,结果映射,完成一次数据库操作
  • 基础支持层:负责最基础的功能支持,连接管理、事务管理、配置加载和缓存处理

MyBatis的优缺点

优点
  • 简单易学:本身就很小且简单。没有任何第三方依赖,最简单安装只要两个jar文件+配置几个sql映射文件易于学习,易于使用,通过文档和源代码,可以比较完全的掌握它的设计思路和实现。

  • 灵活:mybatis不会对应用程序或者数据库的现有设计强加任何影响。 sql写在xml里,便于统一管理和优化。通过sql基本上可以实现我们不使用数据访问框架可以实现的所有功能,或许更多。

  • 解除sql与程序代码的耦合:通过提供DAL层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易单元测试。sql和代码的分离,提高了可维护性。

  • 提供映射标签,支持对象与数据库的orm字段关系映射

  • 提供对象关系映射标签,支持对象关系组建维护

  • 提供xml标签,支持编写动态sql。

缺点
  • 编写SQL语句时工作量很大,尤其是字段多、关联表多时,更是如此。

  • SQL语句依赖于数据库,导致数据库移植性差,不能更换数据库。

  • 框架还是比较简陋,功能尚有缺失,虽然简化了数据绑定代码,但是整个底层数据库查询实际还是要自己写的,工作量也比较大,而且不太容易适应快速数据库修改。

  • 二级缓存机制不佳

安装

<dependency>
  <groupId>org.mybatis</groupId>
  <artifactId>mybatis</artifactId>
  <version>x.x.x</version>
</dependency>

从XML构建SqlSessionFactory

每个Mybatais的应用都是以SqlSessionFactory的实例为核心的.SqlSessionFactory 的实例可以通过 SqlSessionFactoryBuilder获得,而 SqlSessionFactoryBuilder 则可以从 XML 配置文件或一个预先定制的Configuration 的实例构建出 SqlSessionFactory 的实例

mybatis的xml配置文件,包含了mybatis系统的和兴设置,包含数据库连接实例的数据源(DataSource)和决定事务作用域和控制方式的事务管理器(TransactionManager)

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
  <environments default="development">
    <environment id="development">
      <transactionManager type="JDBC"/>
      <dataSource type="POOLED">
        <property name="driver" value="${driver}"/>
        <property name="url" value="${url}"/>
        <property name="username" value="${username}"/>
        <property name="password" value="${password}"/>
      </dataSource>
    </environment>
  </environments>
  <mappers>
    <mapper resource="org/mybatis/example/BlogMapper.xml"/>
  </mappers>
</configuration>

mappers元素则是包含一组映射器(mapper,这些映射器的 XML 映射文件包含了SQL代码和映射定义信息

构建SqlSessionFactiory

//加载mybatis的配置文件
String resource = "org/mybatis/example/mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

使用java构建SqlSessionFactory

DataSource dataSource = BlogDataSourceFactory.getBlogDataSource();
TransactionFactory transactionFactory = new JdbcTransactionFactory();
Environment environment = new Environment("development", transactionFactory, dataSource);
Configuration configuration = new Configuration(environment);
configuration.addMapper(BlogMapper.class);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(configuration);

说了这么多,我们的目的就是通过SqlsessionFactory来构建我们的Sqlsession

Sqlsession实例包含了所有完全包含了面向数据库执行 SQL 命令所需的所有方法。你可以通过SqlSession 实例来直接执行已映射的 SQL 语句。(!!!sqlsession是线程不安全的,每次处理完成后,需要关闭)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值