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日

相关文章

  • 解决zuulGateway网关添加路由异常熔断问题

    解决zuulGateway网关添加路由异常熔断问题 在使用zuulGateway网关时,我们经常需要通过动态添加路由的方式来实现API转发。然而,在高并发或者复杂路由规则时,动态添加路由可能会引发Unexpected error in route导致熔断。本文将详细介绍如何通过修改zuulGateway配置来解决该问题。 问题描述 在使用zuulGatewa…

    Java 2023年5月26日
    00
  • 在SpringBoot项目中整合拦截器的详细步骤

    在SpringBoot项目中整合拦截器的步骤如下: 1.编写拦截器类和配置类 首先,我们需要编写一个自定义的拦截器类,实现HandlerInterceptor接口并重写其三个方法。接着,需要编写一个配置类,将拦截器注册到Spring容器中,并指定对哪些URL进行拦截。 示例: public class MyInterceptor implements Han…

    Java 2023年5月19日
    00
  • Jackson常用方法以及jacksonUtil工具类详解

    Jackson常用方法以及jacksonUtil工具类详解 什么是Jackson Jackson是一个开源的Java库,用于处理JSON格式数据。Jackson能够将Java对象转换成JSON格式的字符串,并且还能将JSON格式的字符串转换成Java对象。在Java Web开发中,使用Jackson能够简化代码并且提高效率。 常用方法 将Java 对象转换为…

    Java 2023年5月26日
    00
  • Java Kafka实现延迟队列的示例代码

    Java Kafka是一款流行的分布式消息队列,支持高效的消息传递以及延迟队列的实现,下面详细讲解如何通过Java Kafka实现延迟队列的示例代码。 延迟队列简介 延迟队列是指将消息发送到消息队列中,消息并不会立即发送给消费者,而是在一定的时间后再发送给消费者,这种方式被称之为延迟队列。 Java Kafka延迟队列示例 下面给出Java Kafka实现延…

    Java 2023年5月20日
    00
  • java8之LocalDate的使用、LocalDate格式化问题

    当我们需要处理日期时,java.time.LocalDate是一个很好的选择。LocalDate类代表了一个ISO格式的日期(yyyy-MM-dd),并且提供了一些用于操作日期的方法。下面是一个使用LocalDate的示例: import java.time.LocalDate; public class LocalDateExample { public …

    Java 2023年5月20日
    00
  • 深入学习 Java 中的 Lambda

    深入学习 Java 中的 Lambda Lambda 表达式是什么 Lambda 表达式是 JDK8 引入的一种特殊语法,功能类似于匿名内部类,但更加简洁和易于理解。通过 Lambda 表达式,我们可以将行为作为函数参数传递,从而实现函数式编程。 Lambda 表达式的语法 Lambda 表达式的语法如下: (parameter1, parameter2, …

    Java 2023年5月26日
    00
  • Java文件上传下载、邮件收发实例代码

    Java文件上传下载及邮件收发是Java程序开发中常用的功能,本文将为大家介绍Java文件上传下载及邮件收发的实例代码,帮助大家更好地掌握Java编程中这些常见功能的实现。 文件上传下载 上传文件 文件上传是Web应用开发中常见的功能之一。以下是一个文件上传的示例代码: @PostMapping("/upload") public Str…

    Java 2023年6月15日
    00
  • SpringBoot整合Security权限控制登录首页

    下面我将详细讲解“SpringBoot整合Security权限控制登录首页”的完整攻略,并给出两个示例来帮助理解。 一、准备工作 1.1 引入依赖 首先,我们需要在pom.xml文件中引入相关依赖: <!– Spring Security依赖 –> <dependency> <groupId>org.springfra…

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