Mybatis的介绍、环境搭建以及入门案例-2020.03.09

MyBatis介绍及环境搭建

  • 什么是框架

    框架(Framework)是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法;另一种定义认为,框架是可被应用开发者定制的应用骨架,前者是从应用方面而后者是从目的方面给出的定义.

    简而言之,框架其实就是某种应用的半成品,就是一组组件,供你选用完成你自己的系统.简单说就是使用别人搭好的舞台,你来表演.而且,框架一般是成熟的,不断升级的软件.

    它是我们软件开发中的一套解决方案,不同框架解决的是不同的问题.

  • 使用框架的好处 : 框架封装了很多的细节,是开发者可以使用极简的方式实现功能,大大提高开发效率

  • 三层架构

    • 表现层 : 是用于展示数据的

    • 业务层 : 是处理业务需求的

    • 持久层 : 是和数据库交互的


      Mybatis的介绍、环境搭建以及入门案例-2020.03.09_第1张图片
      01三层架构.png
  • 持久层技术解决方案

    • JDBC技术 :

      • Connection

      • PreparedStatement

      • ResultSet

    • Spring的JdbcTemplate :

      • Spring中多jdbc的简单封装
    • Apache的DBUtils :

      • 它和Spring的JdbcTemplate很像,也是对Jdbc的简单封装
    • 以上都不是框架

      • JDBC是规范

      • Spring的JdbcTemplate和Apache的DBUtils都只是工具类

  • MyBatis框架概述

    MyBatis是一个优秀的基于Java的持久层框架,它内部封装了Jdbc,使开发者只需要关注SQL语句本身,而不需要花费精力去处理加载驱动、创建连接、创建Statement等复杂的过程.

    MyBatis通过XML或注解的方式将要执行的各种Statement配置起来,并通过Java对象和Statement中SQL的动态参数进行映射生成最终执行的SQL语句,最后由MyBatis框架执行SQL并将结果映射为Java对象并返回.

    采用ORM思想解决了实体和数据库映射的问题,对Jdbc进行了封装,屏蔽了Jdbc api底层访问细节,是我们不用与Jdbc api打交道,就可以完成对数据库的持久化操作

    • MyBatis是一个持久层框架,用Java编写

    • 它封装了Jdbc操作的很多细节,使开发者只需要关注SQL语句本身,而无需关注注册驱动,创建连接等繁杂过程

    • 它使用了ORM思想实现了结果集的封装

    • ORM : (Object Relational Mapping) 对象关系映射,简单来说,就是把数据库表和实体类及实体类的属性对应起来,让我们可以操作实体类就实现操作数据库表.

  • MyBatis环境搭建

    • 创建maven工程并导入坐标
     
       org.mybatis
       mybatis
       3.4.5
       
    
    • 创建实体类和dao的接口
    public interface IitemsDao {
       List findAll();
      }
      ​
      public class Items {
       private int id;
       private String acctName;
       private String password;
       private long crtTime;
      ​
       @Override
       public String toString() {
       final StringBuffer sb = new StringBuffer("items{");
       sb.append("id=").append(id);
       sb.append(", acctName='").append(acctName).append('\'');
       sb.append(", password='").append(password).append('\'');
       sb.append(", crtTime=").append(crtTime);
       sb.append('}');
       return sb.toString();
       }
      ​
       public int getId() {
       return id;
       }
      ​
       public void setId(int id) {
       this.id = id;
       }
      ​
       public String getAcctName() {
       return acctName;
       }
      ​
       public void setAcctName(String acctName) {
       this.acctName = acctName;
       }
      ​
       public String getPassword() {
       return password;
       }
      ​
       public void setPassword(String password) {
       this.password = password;
       }
      ​
       public long getCrtTime() {
       return crtTime;
       }
      ​
       public void setCrtTime(long crtTime) {
       this.crtTime = crtTime;
       }
      }
    
    • 创建MyBatis的主配置文件SqlMapConfig.xml
      
      
      
      
      
       
      
       
      
       
      
       
      
       
       
       
       
       
       
       
       
       
       
       
           
    
    • 创建映射配置文件IitemsDao.xml
      
      
      
       
      
    
  • 环境搭建的注意事项

    • 第一个 : 在MyBatis中它把持久层的操作接口名称和映射文件也叫做 : Mapper,所以 : IitemsDao 和 IitemsMapper时一样的

    • 第二个 : 在idea中创建目录的时候,它和包是不一样的

      • 包在创建时 : com.qfetu.dao它是三级结构

      • 目录在创建时 : com.qfetu.dao它是一级目录

    • 第三个 : MyBatis的映射配置文件位置必须和dao接口的包结构相同

    • 第四个 : 映射配置文件的Mapper标签namespace属性的取值必须是dao接口的全限定类名

    • 第五个 : 映射配置文件的操作配置,id属性的取值必须是dao接口的方法名

    • 当我们遵从了第三,四,五点之后,我们在开发中就无需再写dao的实现类

MyBatis入门案例

  • 案例

    public class Test {
    ​
    public static void main(String[] args) throws Exception{
    //1.读取配置文件
    InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");
    //2.创建SqlSessionFactory工厂
    SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
    SqlSessionFactory factory = builder.build(in);
    //3.使用工厂生产SqlSession对象
    SqlSession sqlSession = factory.openSession();
    //4.使用SqlSession创建Dao接口的代理对象
    IitemsDao iitemsDao = sqlSession.getMapper(IitemsDao.class);
    //5.使用代理对象执行方法
    List list = iitemsDao.findAll();
    for (Items items : list) {
    System.out.printf(items.toString());
    }
    //6.释放资源
    sqlSession.close();
    in.close();
    }
    }
    
  • 案例中的设计模式分析

    Mybatis的介绍、环境搭建以及入门案例-2020.03.09_第2张图片
    入门案例的分析.png
  • MyBatis基于注解的案例

    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    public interface IitemsDao {
    @Select("select * from admin")
    List findAll();
    }
    

    把IitemsDao.xml移除,在dao接口的方法上使用@Select注解,并且指定SQL语句同时需要在SqlMapConfig.xml中的mapper配置时,使用class属性指定dao接口的全限定类名.

  • MyBatis基于dao实现类的案例

    public class ItemsDaoImpl implements IitemsDao {
    private SqlSessionFactory factory;
    @Override
    public List findAll() {
    SqlSession sqlSession = factory.openSession();
    List list = sqlSession.selectList("com.qfetu.dao.IitemsDao.findAll");
    sqlSession.close();
    return list;
    }
    }
    ​
    public class Test {
    ​
    public static void main(String[] args) throws Exception{
    //1.读取配置文件
    InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");
    //2.创建SqlSessionFactory工厂
    SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
    SqlSessionFactory factory = builder.build(in);
    //3.使用工厂生产SqlSession对象
    IitemsDao iitemsDao = new ItemsDaoImpl();
    //4.使用代理对象执行方法
    List list = iitemsDao.findAll();
    for (Items items : list) {
    System.out.printf(items.toString());
    }
    //5.释放资源
    in.close();
    }
    }
    

你可能感兴趣的:(Mybatis的介绍、环境搭建以及入门案例-2020.03.09)