mybatis原理概述入门教程

介绍

MyBatis是一种持久层框架,它允许你使用普通SQL查询、存储过程和高级映射,以及高级映射的结果集和连接。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及缓存代码的需求。MyBatis可以与Spring框架集成。

MyBatis原理概述包括以下方面:

1.配置文件

2.映射文件

3.会话工厂

4.SqlSessionFactoryBuilder

5.SqlSessionFactory

6.SqlSession

详解

1.配置文件

在MyBatis中,我们需要定义配置文件:mybatis-config.xml ,这里定义了连接池、缓存、日志等全局配置。我们需要使用SqlSessionFactoryBuilder创建SqlSessionFactory,并且将mybatis-config.xml文件的输入流传递进去。

下面是一个mybatis-config.xml的简单示例:

<configuration>
  <environments default="development">
    <environment id="development">
      <transactionManager type="JDBC"/>
      <dataSource type="POOLED">
        <property name="driver" value="${driver}"/>
        <property name="url" value="${url}"/>
        <property name="username" value="${username}"/>
        <property name="password" value="${password}"/>
      </dataSource>
    </environment>
  </environments>
  <mappers>
    <mapper resource="org/mybatis/example/BlogMapper.xml"/>
  </mappers>
</configuration>

2.映射文件

映射文件包含了一系列的映射关系,用于定义查询、更新以及其他操作语句。在映射文件中,我们要填写具体的SQL语句,并使用占位符等方式来绑定参数,相当于将数据库的操作写成了一份XML。

下面是一个映射文件的简单示例:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.mybatis.example.BlogMapper">
  <select id="selectBlog" resultType="Blog">
    select * from Blog where id = #{id}
  </select>
</mapper>

3.会话工厂

接下来,我们会使用SqlSessionFactory来创建SqlSession实例以及一些其他工厂方法,这些都是基于mybatis-config.xml文件的配置来调用的。

String resource = "org/mybatis/example/mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
SqlSessionFactory factory = builder.build(inputStream);

SqlSession session = factory.openSession();

4.SqlSessionFactoryBuilder

SqlSessionFactoryBuilder是用于获取SqlSessionFactory接口实例的工具类。

SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();

5.SqlSessionFactory

SqlSessionFactory是提供SqlSession的地方,是MyBatis的核心之一。

String resource = "org/mybatis/example/mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
SqlSessionFactory factory = builder.build(inputStream);

6.SqlSession

SqlSession代表与数据库交互的会话,它会根据配置文件获取数据库连接,并将SQL语句执行结果返回给Java代码调用方。

String resource = "org/mybatis/example/mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
SqlSessionFactory factory = builder.build(inputStream);

SqlSession session = factory.openSession();
Blog blog = (Blog) session.selectOne("org.mybatis.example.BlogMapper.selectBlog", 1);
session.close();

示例

下面是在MyBatis中,插入一条数据的示例,首先编写一个Mapper的接口:

public interface UserMapper {
    void insert(User user);
}

然后编写一个插入数据的XML映射文件:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.UserMapper">
    <insert id="insert" parameterType="com.example.User">
        INSERT INTO users
        (user_name, password)
        VALUES (#{userName}, #{password})
    </insert>
</mapper>

接下来,我们可以在Java代码中使用SqlSession来进行数据库的插入操作:

String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession session = sqlSessionFactory.openSession();

User user = new User();
user.setUserName("test");
user.setPassword("123456");
UserMapper mapper = session.getMapper(UserMapper.class);
mapper.insert(user);

session.commit();
session.close();

另外一个例子,查询用户信息:

String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession session = sqlSessionFactory.openSession();

UserMapper mapper = session.getMapper(UserMapper.class);
User user = mapper.selectById(1);
System.out.println(user.getUserName());

session.close();

总结

MyBatis是一个很强大的持久化框架,其灵活性、简易性和快速性使得它在许多项目中都被广泛使用。MyBatis的核心设计思想是SQL和Java代码之间的分离,成为了它的最大优势。在使用MyBatis的过程中,需要重点关注配置文件、映射文件、会话工厂、SqlSessionFactoryBuilder、SqlSessionFactory和SqlSession等核心组件的作用和使用方法。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:mybatis原理概述入门教程 - Python技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • JavaSpringBoot报错“DataAccessException”的原因和处理方法

    原因 “DataAccessException” 错误通常是以下原因引起的: 数据库连接问题:如果您的数据库连接存在问题,则可能会出现此错误。在这种情况下,您需要检查您的数据库连接并确保它们正确。 SQL 语句问题:如果您的 SQL 语句存在问题,则可能会出现此错误。在这种情况下,您需要检查您的 SQL 语句并确保它们正确。 数据库访问权限问题:如果您的数据…

    Java 2023年5月4日
    00
  • 详解JAVA中获取文件MD5值的四种方法

    下面是“详解JAVA中获取文件MD5值的四种方法”的攻略: 1. 使用Java内置的MessageDigest类获取MD5值 Java语言提供了一个DigestMessage类,它可以将任意长度的数据转换成定长的数据,如将任意长度的文件转换成128位(16个字节)的MD5值。使用如下代码可以实现获取文件的MD5值: public static String …

    Java 2023年5月19日
    00
  • Java类装载机制的作用是什么?

    Java类装载机制的作用是在程序运行时将所使用的类加载到JVM中,以便进行方法调用和对象创建等操作,它可以分为三个阶段: 加载、链接和初始化。Java 虚拟机在执行一个类操作前,会先做类的加载。类的加载由类加载器完成,类加载器负责从磁盘或者网络中读取 .class 文件,并将其转换为内部的 Class 对象。 以下是Java类装载机制的详细使用攻略: 加载 …

    Java 2023年5月11日
    00
  • Spring Boot JPA如何把ORM统一起来

    使用Spring Boot + JPA进行开发可以避免繁琐的ORM操作,让开发更加简单和高效。接下来,我们将详细讲解如何把ORM统一起来,包括定义实体类、配置数据源、定义Repository接口、使用JPA进行CRUD操作等步骤。同时,我们也会给出两个具体的示例供参考。 1. 定义实体类 ORM操作的前提是要定义实体类,对应数据库的表。实体类应该使用Java…

    Java 2023年5月20日
    00
  • Java 关于eclipse导入项目发生的问题及解决方法(推荐)

    下面是关于“Java关于eclipse导入项目发生的问题及解决方法(推荐)”的详细攻略。 问题描述 在使用eclipse导入项目时,有时会遇到如下问题: 导入项目后无法运行或出现编译错误; 导入项目后出现文件缺失或文件重复等问题。 这些问题可能是由于项目配置不正确或者导入过程中出现了错误所导致的。接下来我们将逐一分析解决。 解决方案 方案一:清空eclips…

    Java 2023年5月20日
    00
  • SpringMVC DispatcherServlet组件实现解析

    我来为你详细讲解“SpringMVC DispatcherServlet组件实现解析”的完整攻略。 1. 前言 在SpringMVC开发中,DispatcherServlet组件是非常重要的组件之一,它是整个MVC架构的核心。它负责将客户端的请求数据传递给对应的Controller进行处理,同时还负责将Controller处理的结果返回给客户端。Dispat…

    Java 2023年5月16日
    00
  • JSP开发中Apache-HTTPClient 用户验证的实例详解

    下面是详细的“JSP开发中Apache-HTTPClient用户验证的实例详解”的攻略: 什么是Apache-HttpClient? Apache-HttpClient是一个基于Java的Http客户端库。它提供了通过Http协议访问Web资源的方式,同时支持访问Https资源。 用户验证的作用 通过用户验证,我们可以将访问Web资源的操作限制在特定用户范围…

    Java 2023年6月15日
    00
  • 在React 组件中使用Echarts的示例代码

    使用Echarts在React组件中展示图表是很常见的需求。下面是一个完整的示例代码,你可以根据你自己的需求进行修改和调整。 安装 Echarts 首先,我们需要安装 Echarts。 使用 npm 安装 bash npm install echarts –save 使用 yarn 安装 bash yarn add echarts 导入 Echarts 在…

    Java 2023年6月15日
    00
合作推广
合作推广
分享本页
返回顶部