Mybatis

一。MyBatis本质:

    就是代理模式体现;MyBatis作者思想认为JDBC开发流程中所有的步骤
    都是次要业务,认为SQL编写主要任务。开发人员专注于SQL编写应该
    忽略JDBC开发流程,轻度体现ORM思想。

二MyBatis与Hibernate比较

1。Hibernate:杜绝开发人员亲自试用JDBC,杜绝亲自试用sql命令
              Hibernate无法SQL优化
              Hiberante缓存依赖程度过大,一级缓存如何同步二级缓存

2.MyBatis:杜绝开发人员亲自试用JDBC,认为开发人员专注于sql优化
           MyBatis对于缓存依赖非常轻

三。如何看框架源码:

1.框架都是对某一个老技术的封装。因此看框架之前需要被封装的老技术
  开发流程牢记于心

2.框架内部某一个类的时候,一定要观察类的继承关系

四。JDBC流程

   Class.forName("com.mysql.jdbc.Driver");
   Connection con = DriverManager.getConnection(
       "jdbc:mysql://localhost:3306/kkb","root","123"
    )
   con.setAutoCommit(false)
  PreparedStatement ps = con.preparedStatement(sql);

  ps.setInt();
  ps.setString();

 try{
int num=  ps.executeUpdate();DML
ResultSet rs=   ps.executeQuery(); DQL
ps.executeBatch();
con.commit();
}catch(SQLException ex){
   con.rollback();

}
con.close();
ps.close()

map("insert into xxxx",ps1)

String xPath ="//bean"
String xPath ="//@name"

五。Executor(执行器):
1.【基本介绍】
每一个SqlSession对象都会被分配一个【执行器对象】。
【执行器对象】主要负责【Connection获取】和【Statement对象管理方案】

   2.【Statement对象管理方案】
           1)简单管理方案:一个Statement接口对象只执行一次。执行完毕
                           就会Statement接口对象进行销毁
           2)可重用方案: 使用一个Map集合,关键字就是一条Sql语句。对应
                           内容Statement接口对象,等到SqlSession再次接收到
                           相同命令时,就从map集合找到对应Statement接口使用
                           map.put("select * from order", Statement1)
           3)批处理管理方案:将多个Statement包含的SQL语句,交给一个Statement对象
                              输送到数据库,形成批处理操作

   3.执行器继承关系

          1)Executor接口有两个实现类:
                  BaseExecutor
                  CachingExecutor

          2)BaseExecutor:抽象类;减轻Executor接口实现难度。
          3)CachingExecutour:提高查询效率,在查询时首先到缓存中寻找对应的数据。
                              如果有直接返回,MyBatis框架默认情况下使用执行器缓存执行器
                              如果缓存执行器没有得到对应结果时,才会交给其他的执行器执行

六。StatementHandler接口

   1.介绍:

          主要负责【Statement或则PreparedStatment或则CallableStatment】创建工作
          同时负责【PreparedStatment或则CallableStatment】运输的SQL语句中占位符
          赋值任务。此外负责数据库操作对象的运行行为【update】和【query】

  2.关注方法:4个

          1 prepare: 创建Statement对象或则PreparedStatment或则CallableStatment
          2 parameterize:主要针对PreparedStatment或则CallableStatment关联预编译
                          SQL语句中占位符进行修改
          
          3 update: 如何推送 insert ,update,delete
          4 query :  推送查询

 3.StatementHandler继承

         BaseStatementHandler:抽象类;
                              负责实现 prpare方法

         RoutingStatementHandler:?????



         BaseStatementHandler拥有三个子类

            SimpleStatmentHandler: Statement对象进行初始化
           PreparedStatementHandler: 预初编译对象PreparedStatement进行初始化
           CallableStatementHandler: CallableStatment

4.关于三种数据库操作对象选择,不需要认为控制。

        执行sql语句有关

        情况1: select  *   from  order;   SimpleStatementHander  Statement
        情况2:  select  *   from order where orderId=? PreparedStatementHandler PreparedStatement
        情况3: call{pro}                   CallableStatementHandler   CallableStatment


 Dom4j.jar(XPath)  读取xml文档

             create table dept{


                    deptno int primary key auto_increment,
                    dname  varchar(200),
                    loc    varchar(20)

             }

你可能感兴趣的:(Mybatis)