MyBatis简介

1 篇文章 0 订阅

MyBatis简介


Mybatis以前的名称叫ibatis(internet abatis),后被apache 托管后改名为Mybatis.

MyBatis 是一款优秀的持久层框架,半自动化的ORM映射。

mybatis 与 Hibernate 对比

MybatisHibernate
安全性
学习成本ORM,hsql
程序解耦解耦不解耦
跨数据库优良
运行速度比较快
使用场景中小企业银行、保险

MyBatis的主要成员

描述
ConfigurationMyBatis所有的配置信息都保存在Configuration对象之中,配置文件中的大部分配置都会存储到该类中
SqlSession作为MyBatis工作的主要顶层API,表示和数据库交互时的会话,完成必要数据库增删改查功能
ExecutorMyBatis执行器,是MyBatis 调度的核心,负责SQL语句的生成和查询缓存的维护
StatementHandler封装了JDBC Statement操作,负责对JDBC statement 的操作,如设置参数等
ParameterHandler负责对用户传递的参数转换成JDBC Statement 所对应的数据类型
ResultSetHandler负责将JDBC返回的ResultSet结果集对象转换成List类型的集合
TypeHandler负责java数据类型和jdbc数据类型(也可以说是数据表列类型)之间的映射和转换
MappedStatementMappedStatement维护一条<select|update|delete|insert>节点的封装
SqlSource负责根据用户传递的parameterObject,动态地生成SQL语句,将信息封装到BoundSql对象中,并返回
BoundSql表示动态生成的SQL语句以及相应的参数信息

缓存机制

MyBatis缓存,SqlSession实例缓存来缓存数据,从而达到提高查询性能的要求。

一级缓存

样例代码

  User user1 = userMapper.selectById(1L);
  System.out.println("user1:" + user1);

  User user2 = userMapper.selectById(1L);
  System.out.println("user2:" + user2);

  结果:
  Preparing: SELECT id,`name`,sex FROM user where id = ? 
  Parameters: 1(Long)
  Total: 1

二级缓存

UserMapper userMapper1 = sqlSessionFactory.openSession().getMapper(UserMapper.class);
UserMapper userMapper2 = sqlSessionFactory.openSession().getMapper(UserMapper.class);

User user1 = userMapper1.selectById(1L);
System.out.println(user1);

User user2 = userMapper2.selectById(1L);
System.out.println(user2);

事务管理机制

  1. JdbcTransaction

  2. ManagedTransaction

    <!-- 事务管理 -->
    <bean name="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="yunyingDataSource"/>
    </bean>
    
    <!-- 事务注解 -->
    <tx:annotation-driven transaction-manager="transactionManager" />
    

连接池管理机制

  1. UNPOOLED,不使用连接池的数据源

    org.springframework.jdbc.datasource.DriverManagerDataSource
    
  2. POOLED,使用连接池的数据源

    1. dbcp
    2. c3p0
    3. druid
  3. JNDI,使用JNDI实现的数据源

    1. <TOMCAT_HOME>/conf/context.xml配置JNDI方式
<Resource name="jdbc/mmcDB" //指定的jndi名称,会用于spring数据源bean的配置和ResourceLink的配置
                 auth="Container"//认证方式,一般默认这个
                 type="javax.sql.DataSource"   //数据源床型,使用标准的javax.sql.DataSource
                 driverClassName="com.mysql.jdbc.Driver"    //JDBC驱动器 
                 url="jdbc:mysql://localhost:3306/test" //数据库URL地址             
                 username="test"     //数据库用户名
                 password="test"   //数据库密码
                 maxIdle="40"   //最大的空闲连接数
                 maxWait="4000" //当池的数据库连接已经被占用的时候,最大等待时间
                 maxActive="250" //连接池当中最大的数据库连接
                 removeAbandoned="true" 
                 removeAbandonedTimeout="180"
                 logAbandoned="true" //被丢弃的数据库连接是否做记录,以便跟踪
                 factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory" />
  1. java spring.xml配置
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
     <property name="jndiName">
          <value>jdbc/mmcDB</value>
     </property>
</bean>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值