mybatis的理解

学习深入浅出Mybatis技术原理与实战的总结

第一章:Mybatis简介:
Hibernate和Mybatis的对比
1:Hibernate 对JDBC封装程度比较高,我们不需要SQL语言,只要使用HQL语言就行了,Herbernate是全表映射,Hibernate屏蔽了SQL,那意味着只能进行全表映射,如果一个表有上百个字段,如果需要只有两个,这样Hibernate就无法进行适应;
全表映射的弊端:
1.全表映射带来的不便,比如更新需要发送所有的字段;
2.无法根据不同的条件组装不同的SQL;
3.不能支持有效的存储过程;
4.虽然有HQL,但是性能较差。大型互联网系统往往需要优化SQL,而Hibernate做不到;
正因为以上的问题一个半自动映射的框架mybatis应运而生,之所以称之为半自动,是因为他需要提供手工匹配提供POJO SQL和映射关系,而全表映射Hibernate只需要提供POJO和映射关系便可;
Mybatis需要提供的映射文件包含以下三个部分:
SQL       映射规则            POJO  

第二章:Mybatis入门:

1.SqlSessionFactoryBuilder  在一个方法内    
2.SqlSessionFactory整个生命周期内
3.SqlSession它的生命周期应该是在请求数据库处理事务过程,他存活一个应用的请求和操作,可以执行多条SQL,保证事务的一致性;
4.Mapper和SqlSession一样

第三章:Mybatis的配置:

mybatis配置有  properties  setting  typeAliases  typeHandlers  objectFactory  plugins  environments  databaseIdProvider mappers  ;

第四章  映射器:

在映射器中我们可以定义元素:select  insert  update  delete  parameterMap  sql映射器的配置;
insert  into t_role(role_name,note) values(#{roleName},#{note});
update t_role set role_name=#{roleName},note=#{note} where id=#{id} ;
delete from t_role where id=#{id};
sql元素                     resultMap结果映射集      缓存cache   一级缓存  二级缓存   

第五章  动态SQL:

where 1=1 
and role_name like concat ('%',#{roleName},'%')

在映射器的动态语句中  choose  when  otherwise  元素承担了这个功能   

trim  元素
and role_name like concat ('%',#{roleName},'%')
  

   
      role_name = # {roleName},
 
  
 
      note = # {note},
 

foreach元素:
#{sex}

第六章  Mybatis的解析和运行原理
 
第八章  Mybatis-Spring:

applicationContext.xml的配置:
id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
    name="driverClass">
        com.mysql.jdbc.Driver
    
    name="jdbcUrl">
        jdbc:mysql://localhost:3306/mysql
    
    name="user">
        root
    
    name="password">
        123456
    
    
    name="minPoolSize">
        5
    

    
    name="maxPoolSize">
        30
    

    
    name="initialPoolSize">
        10
    

    
    name="maxIdleTime">
        60
    

    
    name="acquireIncrement">
        5
    

    
    name="maxStatements">
        0
    

    
    name="idleConnectionTestPeriod">
        60
    

    
    name="acquireRetryAttempts">
        30
    

    
    name="breakAfterAcquireFailure">
        true
    

    
    name="testConnectionOnCheckout">
        false
    


id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    name="dataSource" ref="dataSource" />
    name="configLocation" value="classpath:sqlMapConfig.xml" />
    


id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    name="dataSource" ref="dataSource"/>


<tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true"/>

sqlMapConfig.xml
configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">

    
    
        alias="role" type="com.imooc.pojo.Role"/>
        alias="user" type="com.imooc.pojo.User"/>
        alias="file" type="com.imooc.pojo.TFile"/>
        alias="tRole" type="com.imooc.pojo.TRole"/>
    


    
    
        resource="com/imooc/pojo/role.xml" />
        resource="com/imooc/pojo/user.xml" />
        resource="com/imooc/pojo/File.xml"/>
        resource="com/imooc/mapper/TRoleMapper.xml"/>
    

第九章:实用场景:

1.数据库BLOB字段读写  对应实体类byte[];
2.分表;
3.分页  RowBounds


  


你可能感兴趣的:(mybatis基础概念)