MyBatis框架的搭建和使用方法

系列文章目录



MyBatis的简介

MyBatis 是支持普通 SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索(消除JDBC中的冗余代码)(MyBatis是对JDBC的封装)。MyBatis 使用简单的 XML或注解用于配置和原始映射,将接口和 Java 的POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。Mybatis最大的优点就是完成了SQL语句与Java代码的解耦(分离)让开发人员对于持久层的操作仅仅关注SQL就可以了。

一、MyBatis的运行原理和执行流程?

在这里插入图片描述

执行流程

(1)加载配置并初始化
触发条件:加载配置文件
将SQL的配置信息加载成为一个个MappedStatement对象(包括了传入参数映射配置、执行的SQL语句、结果映射配置),存储在内存中。
(2)接收调用请求
触发条件:调用Mybatis提供的API
传入参数:为SQL的ID和传入参数对象
处理过程:将请求传递给下层的请求处理层进行处理。
(3)处理操作请求 触发条件:API接口层传递请求过来
传入参数:为SQL的ID和传入参数对象
处理过程:
(A)根据SQL的ID查找对应的MappedStatement对象。
(B)根据传入参数对象解析MappedStatement对象,得到最终要执行的SQL和执行传入参数。
©获取数据库连接,根据得到的最终SQL语句和执行传入参数到数据库执行,并得到执行结果。
(D)根据MappedStatement对象中的结果映射配置对得到的执行结果进行转换处理,并得到最终的处理结果。
(E)释放连接资源。
(4)返回处理结果将最终的处理结果返回。

示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。

二、最简配通MyBatis

项目工程目录
在这里插入图片描述
导jar包,构建,这是单体项目需要这样弄,SpringBoot项目直接在pom.xml导入依赖即可。
在这里插入图片描述
1、创建Dept类,ste(),get()方法省略。。

public class Dept {
    
    
    private Integer deptno;
    private String dname;
    private String loc;
    }

2、创建Util工具类,读取mybatis.xml配置文件。

public class MybatisUtil {
    
    
    private static SqlSessionFactory ssf ;
    static
    {
    
    
        //读取Mybatis配置文件
        try {
    
    
            Reader reader = Resources.getResourceAsReader("mybatis.xml");
            //创建SqlSessionFactory
            ssf = new SqlSessionFactoryBuilder().build(reader);
        } catch (IOException e) {
    
    
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    public static SqlSession getSqlSession()
    {
    
    
        return ssf.openSession(true);//返回SqlSession该SqlSession会自动提交事务
    }

3、创建Mapper.xml文件,配置sql语句、以及返回参数。

<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="dept">  
      <select id="a" resultType="java.util.Map">  
          select * from dept
      </select>
</mapper>

4、创建数据层IDeptDao接口。

package com.zrrd.dao;

import java.util.List;
import java.util.Map;

public interface IDeptDao {
    
    
  //查询这个表所有结果集
    public  List<Map<String,Object>> deptQuery();
}

5、DeptDaoImpl接口的实现逻辑

public class DeptDaoImpl implements IDeptDao {
    
    
    @Override
    public List<Map<String, Object>> deptQuery() {
    
    
        SqlSession session=MybatisUtil.getSqlSession();
        //dept.a的意思是对相应Mapper.xml文件:dept这个表;a是id
        List<Map<String,Object>> deptlist=session.selectList("dept.a");
        return deptlist;
    }
}

6、配置数据源,整合Mapper.xml路径。

<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<environments default="aa">
    <environment id="aa">
        <transactionManager type="JDBC"></transactionManager>

        <dataSource type="POOLED">
            <property name="driver" value="com.mysql.jdbc.Driver"/>
            <property name="url" value="jdbc:mysql://127.0.0.1:3306/MySql"/>
            <property name="username" value="root"/>
            <property name="password" value="root"/>
        </dataSource>
    </environment>

</environments>
<mappers>
    <mapper resource="com/zrrd/mapper/mapper.xml"/>
</mappers>
</configuration>

7、编写Test测试类。

package com.zrrd.Text;

import com.zrrd.dao.DeptDaoImpl;
import com.zrrd.dao.IDeptDao;
import java.util.List;
import java.util.Map;

public class Test {
    
    
    public static void main(String[] args) {
    
    
        IDeptDao deptdao=new DeptDaoImpl();
        List<Map<String,Object>> dept=deptdao.deptQuery();
        System.out.println(dept);
    }
}

启动输出结果。。。。。。。
在这里插入图片描述


总结

这里已经简述了Mybatis框架的应用和搭建步骤,用select查询作为例子进行开发,可根据业务需求在mapper,xml文件中写sql,对应上相应的接口即可。

猜你喜欢

转载自blog.csdn.net/zhx__/article/details/119849849
今日推荐