Mybatis-01-初识Mybatis

目录

帮助文档:https://mybatis.org/mybatis-3/zh/index.html

简介:

1.什么是MyBatis

2.Mybatis的优点:

1.简单易学:

2.灵活:

3.解除SQL与程序代码的耦合:

4.提供xml标签,

3.Mybatis是一个半自动化的ORM框架

1.使用Mybatis的步骤

1.引入mybatis的包,mysql驱动的jar包

引入静态文件

2.创建响应的实体类接口xml文件等

2.1.1.mybatis-config.xml

2.1.2.db.properties

2.2.until.Mybatis

2.3.mapper

2.3.1.mapper.StudentMapper

2.3.2.mapper.StudentMapper.xml

 2.4.pojo

2.4.1pojo.Student

2.5.测试


帮助文档:https://mybatis.org/mybatis-3/zh/index.html

简介:

1.什么是MyBatis

  • MyBatis 是一款优秀的持久层(数据访问层)框架。

  • 它支持自定义 SQL、存储过程以及高级映射。

  • MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。

  • MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。

  • MyBatis 本是apache的一个开源项目iBatis。

  • 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。

  • 2013年11月迁移到Github。

2.Mybatis的优点:

1.简单易学:

本身就很小且简单。没有任何第三方依赖,最简单安装只要两个jar文件+配置几个sql映射文件就可以了,易于学习,易于使用,通过文档和源代码,可以比较完全的掌握它的设计思路和实现。

2.灵活:

Mybatis不会对应用程序或者数据库的现有的设计强加任何影响,SQL写在xml里,便于统一管理和优化。通过SQL语句可以满足操作数据库的所有操作

3.解除SQL与程序代码的耦合:

通过提供DAO层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易单元测试。SQL和代码的分离,提高了可维护性。

4.提供xml标签,

支持编写动态SQL

3.Mybatis是一个半自动化的ORM框架

(Object Relationship Mapping)--->对象关系映射

经验:使用框架通用步骤:1,引入jar包  2.编写xml配置文件   3.编写java代码

1.使用Mybatis的步骤

1.引入mybatis的包,mysql驱动的jar包

//mybatis的jar包依赖


    org.mybatis
    mybatis
    3.4.6


//mysql的jar包依赖


    mysql
    mysql-connector-java
    5.1.38


//log4j的jar包

    
      log4j
      log4j
      1.2.17
    

引入静态文件

如果你创建的是java项目需要提前引入静态文件    在标签里面



    
        05_18_Mbatis-01
        com.lzy.javaweb
        1.0-SNAPSHOT
    
    4.0.0

    com.lzy.05_31

    
        
            
                
                    src/main/resources
                    
                        **/*.properties
                        **/*.xml
                    
                    true
                
                
                    src/main/java
                    
                        **/*.properties
                        **/*.xml
                    
                    true
                
            
    


2.创建响应的实体类接口xml文件等

Mybatis-01-初识Mybatis_第1张图片

包:mapper,pojp,until

一个接口,一个xml文件,一个实体类,一个Mbatis工具类

三个配置文件db.properties/log4j.properties/mybatis-config.xml


接下类让我们跟随官方帮助文档进行学习

2.1.1.mybatis-config.xml

官方文档




  
    
      
      
        
        
        
        
      
    
  
  
    
  

 自己写

涉及的知识点:

这个xml文件用于获取数据库连接实例的数据源(DataSource)以及决定事务作用域和控制方式的事务管理器(TransactionManager)

  • 标签:用属性标签可以外部引用文件
  • 标签:映射器,需要告诉 MyBatis 到哪里去找到SQL语句,使用相对于类路径的资源引用,或完全限定资源定位符(包括 file:/// 形式的 URL),或类名和包名等





    

    
        
            
            
                
                
                
                
            
        
    

    

        
    

2.1.2.db.properties

properties标签引用的文件

注意:文件里面一个空格都不能多

在jdbc里面不使用“&” 使用“&”

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3308/wlyb?useSSL=true&useUnicode=true&characterEncoding=UTF-8
jdbc.username=root
jdbc.password=1234

但我们初步创Mybatis.xml文档之后接下来我们开始创建class文件


2.2.until.Mybatis

这个文件是Mybatis的核心文件我们用这个文件来创建SqlSession
 1.通过mybatis-config.xml文件
     * 使用Resources.getResourceAsStream(resource)方法
     * org.apache.ibatis.io.Resources引包
     * 获取InputStream对象
 2.通过new SqlSessionFactoryBuilder().build(inputStream)
     * 创建SqlSessionFactory对象(创建一次之后不再使用)
 3.通过sqlSessionFactory.openSession()创建SqlSession

用于官方写的比较散这里就不表

package com.lzy.until;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.IOException;
import java.io.InputStream;

public class Mybatis {
    private static SqlSessionFactory sqlSessionFactory=null;
    /**
     * 1.通过mybatis-config.xml文件
     * 使用Resources.getResourceAsStream(resource)方法
     * org.apache.ibatis.io.Resources引包
     * 获取InputStream对象
     * 2.通过new SqlSessionFactoryBuilder().build(inputStream)
     * 创建SqlSessionFactory对象(创建一次之后不再使用)
     * 3.通过sqlSessionFactory.openSession()创建SqlSession
     */

    static{
        String resource = "mybatis-config.xml";
        try {
            InputStream inputStream = Resources.getResourceAsStream(resource);
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static SqlSession getSqlSession(){
        return sqlSessionFactory.openSession();
    }
}

2.3.mapper

2.3.1.mapper.StudentMapper

 创建学生表的Mapper类StudentMapper

该命名就可以直接映射到在命名空间中同名的映射器类,并将已映射的 select 语句匹配到对应名称、参数和返回类型的方法

用接口类 

注意:方法参数里面要使用一个参数,如果参数多的时候就使用map集合

package com.lzy.mapper;

import com.lzy.pojo.Student;

import java.util.ArrayList;

public interface StudentMapper {
    /**
     * 学生表的接口
     */

    //1.查询所有
    ArrayList getSelect();
}

2.3.2.mapper.StudentMapper.xml

 映射文件

  • 标签:里面写对应的接口类,进行绑定(如果没有定义类别名,就写全限定名)
  •  
  • id:填写接口里面的方法名
  • resultType:填写返回类型
  • #{} :填写通过方法传过来值的名称

官方




  

自己写


        







 2.4.pojo

2.4.1pojo.Student

数据库表里面对应的实体类,每个实体类都应该有一个对应实体类

注意:为了节约博客空间已经将无参有参、set/get/toString方法省略,实际应该写

package com.lzy.pojo;

import java.io.Serializable;

/**
 * 学生实体类
 * 将实体类序列化
 * Student implements Serializable
 * 继承接口 Serializable
 */
public class Student implements Serializable {
    private String studentNumber;
    private String studentName;
    private int studentPassword;
    private int studentAge;
    private String studentDepartment;
    private String teacherNumber;
    private Teacher teacher;
}

2.5.测试

编写测试类之后发现了一些问题,已经放在了里面,但是不能包含全部问题欢迎大家帮我补充

@Test
    public void test01(){
        //测试:学生表01查询所有
        /**
         * 1.通过Mybatis.getSqlSession()获取SqlSession
         * 2.使用获取SqlSession创建接口对象StudentMapper
         * 3.StudentMapper对象调用查询方法
         * 4.遍历集合
         */
        /**
         * 第一次运行:报错
         * java.lang.NullPointerException(一种空指针异常)
         * 原因Mybatis.java类里面sqlSessionFactory异常
         * 解决:将整个设成静态代码块并且将sqlSessionFactory赋为null
         * 第二次运行:报错
         * Caused by: org.apache.ibatis.exceptions.PersistenceException:
         * ### Error building SqlSession.
         * ### The error may exist in com/lzy/mapper/StudentMapper.xml
         * ### Cause: org.apache.ibatis.builder.BuilderException:
         * Error parsing SQL Mapper Configuration. Cause:
         * java.io.IOException: Could not find resource com/lzy/mapper/StudentMapper.xml
         * 告诉我问题出现在Mapper.xml文件里面。但是里代码没有错
         * 最后找到问题原因:因为我创建的是mavenjava项目所以要在pom.xml里面添加加载静态资源的代码
         */
        SqlSession sqlSession = Mybatis.getSqlSession();
        StudentMapper studentMapper = sqlSession.getMapper(StudentMapper.class);
        ArrayList list = studentMapper.getSelect();
        for (Student student : list) {
            System.out.println(student);
        }
    }

到现在为止初步使用Mybatis的框架,我们还需要更加细致的了解和学习

你可能感兴趣的:(Mybatis,mybatis)