IDEA创建MyBatis——初始


IDEA创建MyBatis——初始_第1张图片




一、为什么需要框架技术


1.框架技术
是一个应用程序的半成品
提供可重用的公共结构
按一定规则组织的一组组件



2.分析优势
不用再考虑公共问题
专心在业务实现上
结构统一,易于学习、维护
新手也可写出好程序 


二、MyBatis


1.半自动化的ORM实现
2.DAO层
3.动态SQL
4.小巧灵活、简单易学

IDEA创建MyBatis——初始_第2张图片

1.持久化与ORM

持久化是程序数据在瞬时状态和持久状态间转换的过程

IDEA创建MyBatis——初始_第3张图片



01.ORM(Object Relational Mapping)
编写程序的时候,以面向对象的方式处理数据
保存数据的时候,却以关系型数据库的方式存储

IDEA创建MyBatis——初始_第4张图片
02.ORM解决方案包含下面四个部分
在持久化对象上执行基本的增、删、改、查操作
对持久化对象提供一种查询语言或者API
对象关系映射工具
提供与事务对象交互、执行检查、延迟加载以及其他优化功能

2.MyBatis简介

*MyBatis前身是iBatis,本是Apache的一个开源的项目
*官方网站
http://mybatis.org
*ORM框架
实体类和SQL语句之间建立映射关系
*特点
基于SQL语法,简单易学
能了解底层封装过程
SQL语句封装在配置文件中,便于统一管理与维护,降低程序的耦合度
方便程序代码调试

3.搭建MyBatis开发环境

使用MyBatis的开发步骤

IDEA创建MyBatis——初始_第5张图片
   a.下载mybatis-3.2.2.jar包并导入工程
   b.编写MyBatis核心配置文件(configuration.xml)
   c.创建实体类-POJO
   d.DAO层-SQL映射文件(mapper.xml)
   e.创建测试类

          读取核心配置文件mybatis-config.xml
          创建SqlSessionFactory对象,读取配置文件
          创建SqlSession对象
          调用mapper文件进行数据操作

项目结构如图所示:


IDEA创建MyBatis——初始_第6张图片



pom.xml


    
      junit
      junit
      3.8.1
      test
    
    
      mysql
      mysql-connector-java
      5.1.31
    
    
      org.mybatis
      mybatis
      3.2.2
    
    
      log4j
      log4j
      1.2.17
    
    
      junit
      junit
      RELEASE
    
    
      junit
      junit
      RELEASE
    

    
    
      org.slf4j
      slf4j-api
      1.7.4
    

    
    
      org.slf4j
      slf4j-log4j12
      1.7.5
      test
    


  

  
  
    
      src/main/java
      
        **/*.xml
      
    
  
  

mybatis-config.xml——核心配置文件




    
    

        
    
    
        
            
            
                
                
                
                
            
        
    
    
        
    


database.properties  数据库接连的相关配置

database.driver=com.mysql.jdbc.Driver
database.url=jdbc:mysql://localhost:3306/empdb
database.username=root
database.password=


department.xml





    
    
        id,name
    
    

    
    

DepartmentTest     部门测试类


  @Test
    public void deptTest() throws IOException {
        String resource="mybatis-config.xml";
        InputStream stream= Resources.getResourceAsStream(resource);
        //获得会话工厂
        SqlSessionFactory sf=new SqlSessionFactoryBuilder().build(stream);
        //会话
        SqlSession session=sf.openSession();
        //01.弱类型  通过命名空间唯一锁定要执行的sql
       // List list = session.selectList("cn.happy.dao.getAllDept");
        //02.强类型
        DeptDao dao = session.getMapper(DeptDao.class);
        List list = dao.getAllDept();
        for (Department item:list){
            System.out.println(item.getName());
        }
        session.close();

    }

实现思路:


1、 mybatis配置 
mybatis-config.xml,此文件作为mybatis的全局配置文件,配置了mybatis的运行环境等信息。 
mapper.xml文件即sql映射文件,文件中配置了操作数据库sql语句。此文件需要在mybatis-config.xml中加载。

2、 通过mybatis环境等配置信息构造SqlSessionFactory即会话工厂 
3、 由会话工厂创建sqlSession即会话,操作数据库需要通过sqlSession进行。 
4、 mybatis底层自定义了Executor执行器接口操作数据库,Executor接口有两个实现,一个是基本执行器、一个是缓存执行器。 
5、 Mapped Statement也是mybatis一个底层封装对象,它包装了mybatis配置信息及sql映射信息等。mapper.xml文件中一个sql对应一个Mapped Statement对象,sql的id即是Mapped statement的id。 
6、 Mapped Statement对sql执行输入参数进行定义,包括HashMap、基本类型、pojo,Executor通过Mapped Statement在执行sql前将输入的Java对象映射至sql中,输入参数映射就是jdbc编程中对preparedStatement设置参数。 
7、 Mapped Statement对sql执行输出结果进行定义,包括HashMap、基本类型、pojo,Executor通过Mapped Statement在执行sql后将输出结果映射至java对象中,输出结果映射过程相当于jdbc编程中对结果的解析处理过程。

输出映射(返回的结果集可以有哪些类型)

1)基本类型

2)pojo类型

3)List类型

3.MyBatis框架优缺点

优点
与JDBC相比,减少了50%以上的代码量
最简单的持久化框架,小巧并简单易学
SQL代码从程序代码中彻底分离,可重用
提供XML标签,支持编写动态SQL
提供映射标签,支持对象与数据库的ORM字段映射
缺点
SQL语句编写工作量大,对开发人员有一定要求
数据库移植性差

MyBatis专注于SQL本身,是一个足够灵活的DAO层解决方案,适用于性能要求较高或者需求多变的互联网项目


4.MyBatis基本要素

01.MyBatis的核心对象  SqlSessionFactoryBuilder 、  SqlSessionFactory 、SqlSession
02.mybatis-config.xml  系统核心配置文件
03.mapper.xml  SQL映射文件

核心对象:

1.SqlSessionFactoryBuilder
用过即丢,其生命周期只存在于方法体内
可重用其来创建多个 SqlSessionFactory 实例
负责构建SqlSessionFactory,并提供多个build方法的重载

2.SqlSessionFactory
SqlSessionFactory是每个MyBatis应用的核心
作用:创建SqlSession实例
作用域:Application
生命周期与应用的生命周期相同
单例
存在于整个应用运行时,并且同时只存在一个对象实例

3.SqlSession
包含了执行SQL所需的所有方法
对应一次数据库会话,会话结束必须关闭
线程级别,不能共享

注意:在SqlSession里可以执行多次SQL语句,但一旦关闭了SqlSession就需要重新创建

SqlSession的两种使用方式
01.通过SqlSession实例直接运行映射的SQL语句
02.基于Mapper接口方式操作数据

mybatis-config.xml 系统核心配置文件

IDEA创建MyBatis——初始_第7张图片


a.配置properties元素的两种方式
1.通过外部指定的方式(database.properties),实现动态配置
2.直接配置为xml,实现动态配置

b.Setting元素

用来修改MyBatis运行时的行为方式
主要是MyBatis的一些全局配置属性的设置

IDEA创建MyBatis——初始_第8张图片


c:typeAliases元素

类型别名
仅仅只关联XML配置,简写冗长的Java类名

//方式一

	


//方式二:

	


d:environments元素

表示配置MyBatis的多套运行环境,将SQL映射到多个不同的数据库上
子元素节点:environment,但是必须指定其中一个为默认运行环境(通过default指定)

IDEA创建MyBatis——初始_第9张图片

transactionManager-事务管理器

IDEA创建MyBatis——初始_第10张图片

dataSource
dataSource元素使用基本的JDBC数据源接口来配置JDBC连接对象的资源
有三种内建的数据源类型


e:mappers元素

IDEA创建MyBatis——初始_第11张图片


5.MyBatis与Hibernate的区别

IDEA创建MyBatis——初始_第12张图片


你可能感兴趣的:(MyBatis)