Mybatis01_mybatis的使用

一、mybatis概念

        MyBatis(半自动) 是一款优秀的持久层dao框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型、接口和 Java 的 POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。

mybatis – MyBatis 3 | 简介

1.1 持久层框架 orm 框架 ( object relation mapping ) 对象关系映射

java

database

对象

一行数据(主键)

属性

二、 mybatis配置文件

2.1 properties

        这些属性可以在外部进行配置,并可以进行动态替换。你既可以在典型的 Java 属性文件中配置这些属性,也可以在 properties 元素的子元素中设置。例如:


    
        
    
    
        
            
            
                
                
                
                
            
        
    

 2.2 settings

        这是 MyBatis 中极为重要的调整设置,它们会改变 MyBatis 的运行时行为。下表描述了设置中各项的意图、默认值等

    
         
        
        
        
    

         测试一级缓存:mybatis的一级缓存,在同一个sqlsession中生效,一旦sqlsession关闭,缓存自动消失,查询相同的内容,需要重新连接数据库获取。

    @Test
//    mybatis的一级缓存,在同一个sqlsession中生效,
//    一旦sqlsession关闭,缓存自动消失,查询相同的内容,需要重新连接数据库获取
    public void findAllEmpInfo() {
        // 从测试案例可以看出,同一次会话,默认缓存数据,第二次查询相同的数据,直接从缓存中获取。
        System.out.println("第一次查询");
        List allEmpInfo = empDao.selectEmpInfo();
        for (EmpEntity empEntity : allEmpInfo) {
            System.out.println("实体类"+empEntity.toString());
        }
        System.out.println("第二次查询");
        List allEmpInfo1 = empDao.selectEmpInfo();
        for (EmpEntity empEntity : allEmpInfo1) {
            System.out.println("实体类"+empEntity.toString());
        }
//         第三次关闭sqlsession,重新打开一个sqlsession
//         测试案例可以发现,一旦sqlsession关闭,缓存自动消失,查询相同的内容,需要重新连接数据库获取。
        //重新打开一个新的sqlsession
        SqlSession sqlSession1 = MySqlsessionFactory.getSQLSession();
        EmpInfoMybatisDao empDao1 = sqlSession1.getMapper(EmpInfoMybatisDao.class);
        System.out.println("第三次查询");
        List allEmpInfo2 = empDao1.selectEmpInfo();
        for (EmpEntity empEntity : allEmpInfo2) {
            System.out.println("实体类"+empEntity.toString());
        }
    }

        测试结果显示

Mybatis01_mybatis的使用_第1张图片

 2.3 typeAliases

        类型别名是为 Java 类型设置一个短的名字。它只和 XML 配置有关,存在的意义仅在于用来减少类完全限定名的冗余。例如:



    

Mybatis01_mybatis的使用_第2张图片

三、mybatis的具体使用

步骤一:pom.xml文件中引入jar包

如果使用 Maven 来构建项目,则需将下面的依赖代码置于 pom.xml 文件中:

3.5.6


  org.mybatis
  mybatis
  ${mybatis.version}

步骤二:配置全局配置文件mybatis-config.xml

      每个基于 MyBatis 的应用都是以一个 SqlSessionFactory 的实例为核心的。SqlSessionFactory 的实例可以通过 SqlSessionFactoryBuilder 获得。而 SqlSessionFactoryBuilder 则可以从 XML 配置文件或一个预先配置的 Configuration 实例来构建出 SqlSessionFactory 实例。

        在 resources中 创建一个全局配置文件  mybatis-config.xml






    
    

    

        

        
    

    
        
    
    
        
            
            
                
                
                
                
            
        
    
    
    
    
        
    

第三步:构建 SqlSessionFactory

        可以从配置或者直接编码来创建SqlSessionFactory 通过SqlSessionFactory创建SqlSession

package com.aaa.util;

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;
/**
 * @author :caicai
 * @date :Created in 2022/6/9 11:08
 * @description:  第三步  构建sqlsession的工具类   获取session
 * @modified By:
 * @version:
 */
public class MySqlsessionFactory {
    // 全局配置文件
    static String resource = "mybatis-config.xml";
    static SqlSessionFactory sqlSessionFactory;
    static {
        InputStream inputStream = null;
        try {
            inputStream = Resources.getResourceAsStream(resource);
        } catch (IOException e) {
            e.printStackTrace();
        }
        sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
    }
    /**
     * @create by:
     * * @description: 获取sqlsession
     * * @create time: 2020/12/9 10:29
     * * @return SqlSession
     */
    public static SqlSession getSQLSession() {
        SqlSession sqlSession = sqlSessionFactory.openSession();
        return sqlSession;
    }
}

步骤四:创建dao接口

import java.util.Map;
/**
 * @description:   第四步 创建dao接口
 */
// 接口和映射文件是相关联的   他们是成对出现的
public interface EmpInfoMybatisDao {
    List selectEmpInfo();
}

步骤五:创建mapper映射文件






       



        
    


    
    
    

步骤六:调用session.commit()提交事务

        如果是更新、添加、删除语句,我们还需要提交一下事务。

步骤七:调用session.close()关闭会话

        一定要记得关闭会话。

 @After
//    测试之后
    public void tearDown() throws Exception {
        System.out.println("结束测试");
        if(sqlSession!=null){
            // 事物提交
            sqlSession.commit();
        }else {
            // 关闭sqlSession
            sqlSession.close();
        }
    }

步骤八:使用junit测试工具单元测试

  • 导入junit的jarzai

   junit
   junit
   4.11
   test

 在测试类中进行测试

public class EmpInfoMybatisDaoTest {
    private SqlSession sqlSession;
    private EmpInfoMybatisDao empDao;
    @Before
//    测试之前
    public void setUp() throws Exception {
        System.out.println("开始测试");
        sqlSession = MySqlsessionFactory.getSQLSession();
        empDao = sqlSession.getMapper(EmpInfoMybatisDao.class);
    }
    @After
//    测试之后
    public void tearDown() throws Exception {
        System.out.println("结束测试");
        if(sqlSession!=null){
            // 事物提交
            sqlSession.commit();
        }else {
            // 关闭sqlSession
            sqlSession.close();
        }
    }
    @Test
    public void searchUsesEmpInfo2() {
        List useInfo = empDao.queryUsesInfo2("张三",20000f);
        for (EmpEntity empEntity : useInfo) {
            System.out.println(empEntity);
        }
    }
}

 测试结果:

Mybatis01_mybatis的使用_第3张图片

你可能感兴趣的:(mybatis,mybatis,java,数据库)