Mybatis之入门使用

发布时间:2023年12月27日

系列文章目录

提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
Mybatis之入门使用


提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

提示:这里可以添加本文要记录的大概内容:

MyBatis 是一个优秀的持久层框架,它简化了数据库操作,提高了开发效率。在这篇博客中,我将带领你入门 MyBatis,了解如何使用它来操作数据库。
通过阅读这篇博客,你将了解到 MyBatis 的基本概念和架构,以及如何使用 MyBatis 创建映射文件、配置数据源和进行数据库操作。
无论是刚开始学习 MyBatis,还是已经有一定经验的开发者,这篇博客都将为你提供一个清晰的指导,帮助你更好地理解和使用 MyBatis。让我们一起开始 MyBatis 的学习之旅吧!


提示:以下是本篇文章正文内容,下面案例可供参考

一、环境准备

1.准备好数据库,建立表,这里大家自行创建
2.创建maven工程,引入依赖

<dependencies>
  <!--  mybatis  -->
  <dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.5.7</version>
  </dependency>
  <!--  mysql驱动包  -->
  <dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.26</version>
  </dependency>
  <!--  junit  -->
  <dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.10</version>
  </dependency>
  <!--  log4j  -->
  <dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.12</version>
  </dependency>
</dependencies>

3.在resources目录下创建mybatis核心配置文件SqlMapConfig.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
    PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
    "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
  <!--  配置环境  -->
  <environments default="mysql">
    <environment id="mysql">
      <!--  事务类型  -->
      <transactionManager type="JDBC"></transactionManager>
      <!--  数据源  -->
      <dataSource type="POOLED">
        <property name="driver" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql:///mybatis"/>
        <property name="username" value="root"/>
        <property name="password" value="root"/>
      </dataSource>
    </environment>
  </environments>
</configuration>

4.将log4j.properties文件放入resources中,让控制台打印SQL语句。

# Set root category priority to INFO and its only appender to CONSOLE.
#log4j.rootCategory=INFO, CONSOLE            debug   info   warn error fatal
log4j.rootCategory=debug, CONSOLE

# Set the enterprise logger category to FATAL and its only appender to CONSOLE.
#log4j.logger.org.apache.axis.enterprise=FATAL, CONSOLE

# CONSOLE is set to be a ConsoleAppender using a PatternLayout.
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=[%d{MM/dd HH:mm:ss}] %-6r [%15.15t] %-5p %30.30c %x - %m\n

5.创建实体类

public class User {
  private int id;
  private String username;
  private String sex;
  private String address;
    // 省略getter/setter/构造方法/toString方法
}

二、持久层接口和映射文件

1.在java目录创建持久层接口

public interface UserMapper {
  List<User> findAll();
}

2.在resource目录创建映射文件。需要注意的是映射文件要和接口名称相同,例如假如接口名称为UserMapper,则映射文件的名称则为UserMapper.xml。映射文件要和接口的目录结构相同,例如接口的目录为com.zhangsan.UserMapper,则映射文件的目录则为,com.zhangsan.UserMapper.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.zhangsan.mapper.UserMapper">
  <select id="findAll" resultType="com.zhangsan.pojo.User">
     select * from user
  </select>
</mapper>

其中:

  • 映射文件中namespace属性要写接口的全名。
  • 映射文件中标签的id属性是接口方法的方法名。
  • 映射文件中标签的resultType属性是接口方法的返回值类型。
  • 映射文件中标签的parameterType属性是接口方法的参数类型。
  • 映射文件中resultType、parameterType属性要写全类名,如果是集合类型,则写其泛型的全类名。

三、测试持久层接口方法

@Test
public void testFindAll() throws Exception {
  // (1)读取核心配置文件
  InputStream is = Resources.getResourceAsStream("SqlMapConfig.xml");
  // (2)创建SqlSessionFactoryBuilder对象
  SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
  // (3)SqlSessionFactoryBuilder对象获取SqlSessionFactory对象
  SqlSessionFactory factory = builder.build(is);
  // (4)SqlSessionFactory对象获取SqlSession对象
  SqlSession session = factory.openSession();
  // (5)SqlSession对象获取代理对象
  UserMapper userMapper = session.getMapper(UserMapper.class);
  // (6)代理对象执行方法
  List<User> all = userMapper.findAll();
  all.forEach(System.out::println);


  // (7)释放资源
  session.close();
  is.close();
}

其中:

  1. SqlSessionFactoryBuilder:SqlSession工厂构建者对象,使用构造者模式创建SqlSession工厂对象。
  2. SqlSessionFactory:SqlSession工厂,使用工厂模式创建SqlSession对象。
  3. SqlSession:该对象可以操作数据库,也可以使用动态代理模式创建持久层接口的代理对象操作数据库。
  4. Mapper:持久层接口的代理对象,他具体实现了持久层接口,用来操作数据库。

四、MyBatis工作流程

  1. 创建SqlSessionFactoryBuilder对象
  2. SqlSessionFactoryBuilder对象构建了SqlSessionFactory对象:构造者模式
  3. SqlSessionFactory对象生产了SqlSession对象:工厂模式
  4. SqlSession对象创建了持久层接口的代理对象:动态代理模式
  5. 代理对象操作数据库

注意:后面关于Mybatis的讲解,将不再进行环境的准备


总结

提示:这里对文章进行总结:

在本博客中,我们深入探讨了 MyBatis 这个强大的 ORM(对象关系映射)框架,学习了如何使用它来简化数据库操作。我们首先了解了 MyBatis 的基本架构和工作原理,包括映射文件、配置文件和 SQL 映射语句的概念。
然后,我们逐步引导读者完成了创建映射文件、配置数据源以及执行增删改查操作的过程。通过实际示例,读者可以更好地理解如何将实体类与数据库表进行映射,以及如何使用 MyBatis 提供的查询语句和参数传递功能。
总而言之,通过本博客,读者对 MyBatis 有了全面的了解,并掌握了使用它进行数据库操作的基本技能。无论是刚接触 MyBatis 的新手还是希望进一步提升技能的开发者,都能从本博客中获得有价值的信息。

文章来源:https://blog.csdn.net/liubopro666/article/details/135243026
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。