Mybatis入门

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: Mybatis入门

1.Mybatis的背景


Mybatis是一款优秀的持久层框架,它是由Apache软件基金会提供的一个开源项目,它在Hibernate、TopLink等ORM框架的基础上,将Sql语句与代码解耦,以及动态Sql的使用,使得开发者可以灵活地控制Sql语句的生成和执行过程。


在Java开发领域,Sql语句的编写一直是比较麻烦和容易出错的一个环节,传统的JDBC方式需要开发者手动拼写Sql语句,并且在执行时需要手动设置参数和处理结果集。而ORM框架则是将Java对象和数据库表进行映射,在进行增、删、改、查等操作时,只需要对Java对象进行操作,ORM框架会将操作转化为对数据库的Sql语句进行操作。但是,ORM框架常常会存在一定的性能问题,特别是对于超大型数据量和高并发的系统,ORM框架的性能会更加明显地劣于手工编写的Sql语句。


Mybatis框架结合了ORM框架和手工Sql语句编写的优点,它通过Sql映射文件与Java接口的方法进行绑定,实现了Java对象与数据库表的映射,同时也允许开发者手动控制Sql语句的生成和执行过程,这样就可以更好地控制程序的性能。另外,Mybatis框架提供了一些成熟的缓存机制,能够有效地减少数据库访问的次数,提升系统的性能。Mybatis框架还有很多其他的高级特性,如动态Sql、参数映射、插件等功能,可以进一步提升开发效率和程序性能。

2.Mybatis的的作用

Mybatis的主要作用是简化数据库访问代码的编写,提供灵活性和高度可定制性的数据持久化解决方案。具体来说,Mybatis的作用包括以下几个方面:


数据库访问:Mybatis可以帮助开发人员处理与数据库的交互,包括执行SQL语句、查询数据、插入、更新和删除等操作。它提供了丰富的API和配置方式,使得开发人员能够轻松地进行数据库访问。


SQL映射:Mybatis将SQL语句与Java代码进行分离,通过XML或注解的方式进行配置,使得开发人员可以更加专注于业务逻辑的实现。它支持动态SQL,可以根据不同的条件生成不同的SQL语句,提供了强大的灵活性。


参数映射:Mybatis支持将Java对象与SQL语句的参数进行映射,可以通过命名参数或位置参数的方式传递参数。它还提供了丰富的参数处理方式,包括自动类型转换、参数校验和参数处理器等。


结果集映射:Mybatis支持将查询结果映射为Java对象,可以通过配置文件或注解来定义映射关系。它提供了灵活的映射方式,可以将查询结果映射为单个对象、列表、嵌套对象等形式,方便数据的处理和操作。


缓存机制:Mybatis具有缓存机制,可以缓存查询结果,提高数据库访问的性能。它支持一级缓存和二级缓存,可以根据需求进行配置和使用。


总而言之,Mybatis作为一款轻量级的Java持久层框架,可以帮助开发人员简化数据库访问的代码编写,提供灵活性和高度可定制性的数据持久化解决方案。它在许多项目中得到广泛应用,成为Java开发人员进行数据库访问的首选框架之一。

3.Mybatis概述


Mybatis是一个基于Java语言的持久层框架,它通过XML描述符或注解将对象与关系型数据库中的表进行映射,使得在Java应用程序中操作数据库变得方便和高效。Mybatis具有以下优点:


灵活性高:Mybatis通过Sql映射文件与Java接口的方法进行绑定,允许开发者手动控制Sql语句的生成和执行过程,极大地提高了灵活性。


易于学习和使用:Mybatis核心配置简单明了,且集成规范,易于上手。


性能出色:Mybatis不会对Sql进行特意优化,而是将这一任务交给了开发者,因此开发者可以根据自己的需求对Sql进行优化,从而提高性能。


易于集成:Mybatis可以与Spring等大多数主流框架无缝集成。


总之,Mybatis是一款开源的、轻量级的、高效的Java持久化框架,非常适合开发中、小型项目。

4.Mybatis的定义


Mybatis是一款基于Java语言的持久层框架,它通过SQL映射文件或注解将Java对象与数据库表进行映射,方便进行数据的持久化操作。Mybatis的核心思想是将SQL语句与Java代码进行解耦,使得开发者能够更好地控制SQL语句的生成和执行过程,进而提高系统的灵活性、可维护性和性能。


当我们考虑使用 MyBatis,就好像我们在处理数据库时的一种智能方法。想象一下,你是一个数据库管理员,有一堆数据库表格和数据,而你的任务是通过编写查询语句来检索、插入、更新和删除数据。但是,你不想使用复杂的工具,而是更喜欢直接使用 SQL 语句来处理数据。


MyBatis 就像是你的助手,它让你可以轻松地执行数据库操作,而无需关心太多底层细节。你可以将数据库表格和 Java 类之间的关系告诉 MyBatis,然后告诉它你想要执行的操作,比如查询特定数据,或者将新数据插入到表格中。


与传统的方法不同,MyBatis 允许你在 XML 配置文件中编写 SQL 查询,也可以通过注解在 Java 代码中指定。这就像是你编写一份清单,告诉 MyBatis 你想要做什么,然后它会帮你将这些请求转化为真正的 SQL 查询。这样,你可以轻松地在 Java 代码中调用这些查询,就像在数据库中进行搜索一样简单。


而且,MyBatis 还有其他聪明的功能。它支持缓存,这意味着当你多次查询相同的数据时,它会从内存中快速获取,而不是每次都去数据库查询。它还支持懒加载,这意味着当你需要某些关联数据时,它才会从数据库中加载,而不是一次性加载所有内容。


总之,使用 MyBatis 就像是在处理数据库时有一个智能的助手,它帮助你编写、执行和管理数据库操作,同时让你保持对 SQL 查询和数据流的直接控制。这样,你可以更专注于业务逻辑,而不必过多担心数据库访问的复杂性。

5.Mybatis的特点


Mybatis有以下特点:


灵活性:Mybatis可以通过SQL映射文件或注解实现SQL的编写,开发者可以根据实际需求自由定义SQL语句,不受框架限制。


可维护性:Mybatis可以将SQL语句和Java代码进行解耦,使得SQL语句的修改和维护更加方便。


易于学习和使用:相对于其他ORM框架,Mybatis的学习曲线较为平缓,文档齐全,易于上手。


高性能: Mybatis使用了缓存机制,可以有效地提高系统的性能和响应速度。


支持多种数据库:Mybatis支持多种关系型数据库,包括MySQL、Oracle、SQL Server等,使用方便灵活。


当谈到 MyBatis 这个东西时,就好像在讨论一位非常擅长连接你和数据库的"翻译家"。想象一下,你有一个庞大的图书馆,里面放满了书籍,而你需要找到特定的书籍或者把新的书籍放进去。但是,你不擅长找到正确的书架,或者不知道如何将新书整理好。


MyBatis 就像是那位翻译家,它能够帮助你实现与图书馆的沟通,就像你在使用英语与其他人对话一样。你告诉这位翻译家你需要哪本书,或者你想要添加什么新书,然后它会帮你找到正确的书架,整理好新书,确保你的请求得到满足。


与其他复杂的工具不同,MyBatis 让整个过程变得非常直观。你可以告诉它,哪本书对应着哪个数据库表,然后告诉它你需要哪种操作,比如读取书籍或者添加新书。你可以在一个叫做 XML 配置文件的地方写下你的要求,或者在你的代码中用特殊的记号标明。


而且,MyBatis 还有一些额外的优点。它支持缓存,就好像你把你最常用的书放在你的书桌上,这样可以更快地拿到它们,而不是每次都去书架上翻找。还有懒加载功能,当你只需要特定的书籍时,它会帮你把那本书从书架上取下来,而不是一次性把所有书都取出来。


总之,MyBatis 就像是一个与图书馆之间建立联系的智能翻译家。它能够帮你轻松实现与数据库的交流,而不需要过多担心复杂的操作。这样,你可以更专注于你的工作,而不必花费过多时间在与数据库的互动上。

6.ORM框架是什么


ORM(Object-Relational Mapping)框架是一种将对象模型和关系数据库之间进行映射的技术。它的主要作用是将数据库中的数据映射为对象,使得开发人员可以通过面向对象的方式来操作数据库,而不需要直接编写SQL语句。


ORM框架通过提供一系列的API和工具,将数据库表和对象之间的映射关系进行定义和管理。开发人员可以通过配置或注解的方式,将对象与数据库表进行关联,定义字段之间的映射关系,以及定义对象之间的关联关系。


ORM框架的主要优点包括:


简化数据库操作:ORM框架隐藏了底层数据库的细节,开发人员可以通过面向对象的方式来进行数据库操作,无需编写复杂的SQL语句。

提高开发效率:ORM框架提供了一系列的CRUD(增删改查)操作的API和工具,可以大大简化数据库操作的代码量,提高开发效率。

跨数据库支持:ORM框架一般支持多种数据库,开发人员可以在不同的数据库之间进行切换,而无需修改大量的代码。

对象关系映射:ORM框架将数据库表和对象之间的映射关系进行管理,使得开发人员可以通过对象的方式来操作数据库,方便数据的处理和操作。

提高性能:ORM框架通过对SQL语句的预编译和缓存机制,提高数据库访问的性能,支持批量操作和延迟加载等特性,进一步优化了数据库访问的效率。

常见的ORM框架包括Hibernate、Mybatis、Spring Data JPA等。开发人员可以根据项目需求和团队的实际情况选择合适的ORM框架来进行数据库访问和操作

7.Mybatis与其他ORM框架的区别


当比较MyBatis与其他ORM(对象关系映射)框架时,以下是一些主要区别:


SQL 控制程度:


MyBatis: MyBatis允许开发人员编写原生SQL查询,并将其映射到对象。这使得可以更精确地控制数据库操作,但需要手动处理SQL语句。

其他ORM框架: 其他ORM框架(如Hibernate)通常通过提供高级抽象来隐藏SQL,从而减少了手动编写SQL的工作,但可能在性能和复杂性方面具有一些限制。

灵活性:


MyBatis: MyBatis在处理复杂查询和自定义映射方面非常灵活。开发人员可以根据需要进行细粒度的控制和优化。

其他ORM框架: 其他ORM框架可能在灵活性方面受到一些限制,因为它们试图提供更高级的抽象来处理数据库操作。

对象关系映射:


MyBatis: MyBatis使用XML或注解来定义对象与数据库表之间的映射关系,允许开发人员精确地配置如何将数据库查询结果映射到对象属性。

其他ORM框架: 其他ORM框架通常使用类和注解来定义对象和数据库表之间的映射关系,通过约定优于配置的方式来减少映射配置的工作。

性能优化:


MyBatis: 由于开发人员可以编写原生SQL,因此他们可以更好地优化查询性能,但需要更多的数据库知识。

其他ORM框架: 其他ORM框架可能在某些情况下执行性能优化,但可能不如手动优化的精确。

学习曲线:


MyBatis: 对于熟悉SQL的开发人员来说,上手相对较容易。但对于不熟悉SQL的人来说,可能需要一些时间来理解。

其他ORM框架: 其他ORM框架可能提供更高级的抽象,适合那些不太了解SQL的开发人员。

综上所述,选择MyBatis还是其他ORM框架取决于项目的需求、团队的技能和对数据库操作的控制程度。


当比较 MyBatis 和其他 ORM 框架时,就像在比较两种不同的方式来处理图书馆中的书籍。这两种方式分别是“智能图书管理员”(ORM 框架)和“书架指南”(MyBatis)。


MyBatis(书架指南):

在图书馆中,你有一个书架指南,上面标明了每本书在哪个位置。这本质上就是你在 MyBatis 中定义的 SQL 映射。

当你想要一本特定的书时,你会查阅书架指南,找到书籍的位置,然后自己去取。

MyBatis 让你在 XML 文件中定义 SQL 查询或在代码中使用注解,然后根据这些定义的内容,它会帮助你执行数据库操作。

你有更多的控制权,可以更准确地定义查询,管理数据库操作的细节。


其他 ORM 框架(智能图书管理员):

在图书馆中,你有一位智能图书管理员,你只需告诉他你需要哪本书,他会帮你找到并递给你。

这个图书管理员代表了 ORM 框架,它会在后台自动构建和执行 SQL 查询,然后把结果封装成对象返回给你。

ORM 框架通过对象和数据库表的映射,自动处理数据库操作,不需要你手动编写 SQL 查询。

这使得操作更加方便,你只需要关心对象和业务逻辑,而不必过多关注底层的数据库细节。


总的来说,MyBatis 和其他 ORM 框架的区别在于控制程度。MyBatis 像是一个让你手动操作图书馆的书架指南,让你有更多的控制权和灵活性,但需要一些额外的配置和代码编写。另一方面,其他 ORM 框架就像是一个智能的图书管理员,自动帮你处理数据库操作,省去了很多繁琐的工作,但可能会限制一些复杂查询和优化操作的自定义。选择哪种方式取决于你对控制和自动化的需求。

8.mybatis优缺点

MyBatis优点


灵活性高:MyBatis允许你编写原生的SQL查询,这意味着你可以完全控制查询的细节,可以根据需求编写复杂的查询语句。


适应性强:MyBatis适用于各种数据库系统,因为它的底层并不限制于特定的数据库。这使得你可以轻松地切换数据库系统而不必更改太多代码。


轻量级:相比于其他ORM框架,MyBatis的运行时开销相对较小。它不会在运行时引入过多的性能开销,适合对性能要求较高的场景。


映射灵活:MyBatis提供了多种映射方式,包括基于XML和基于注解的方式,你可以根据项目的需求选择最合适的方式。


易于调优:由于你可以编写原生SQL查询,因此可以更容易地进行数据库查询性能的调优,针对特定的数据库操作优化。


支持定制:MyBatis提供了插件机制,允许你在不修改核心代码的情况下扩展其功能,比如添加自定义的日志记录、缓存等功能。

MyBatis缺点


SQL维护复杂:虽然原生SQL查询提供了灵活性,但也意味着你需要自己负责维护SQL语句,包括SQL的编写、优化和调试,这可能会增加一些开发工作量。


数据库依赖性:虽然MyBatis可以适应多种数据库,但在切换数据库时,仍然需要注意一些数据库特定的差异和语法问题。


学习曲线:相对于一些自动化的ORM框架,MyBatis可能有一定的学习曲线,特别是对于初次接触原生SQL的开发者。


XML配置复杂:尽管XML配置提供了很大的灵活性,但有时候需要编写大量的XML配置文件,可能会让配置变得复杂。


代码冗余:使用MyBatis时,你可能需要在Mapper接口和映射文件中定义相同的SQL语句,这可能会导致代码的冗余。


总的来说,MyBatis是一个灵活、轻量级的ORM框架,适用于那些需要更多控制和定制性的项目。它允许你编写原生的SQL查询,但也需要你自己负责SQL的维护和优化。如果你更关注自动化和减少重复性代码,其他ORM框架可能更适合你。选择使用MyBatis还是其他ORM框架,取决于项目需求和团队的技术偏好。

9.MyBatis的核心组件


SqlSessionFactory(会话工厂):SqlSessionFactory 是 MyBatis 的核心接口之一。它的作用是创建 SqlSession 实例,SqlSession 实际上是与数据库交互的主要入口。SqlSessionFactory 负责读取 MyBatis 配置文件并构建配置信息,然后根据配置信息创建 SqlSession。


SqlSession(会话):SqlSession 代表了一次与数据库的会话,它是 MyBatis 的核心组件之一。SqlSession 提供了对数据库的操作方法,包括查询、插入、更新和删除等。每个会话通常对应一个数据库连接,它负责管理事务的开始和结束。


Mapper接口(数据映射器接口):Mapper 接口是定义数据访问操作的接口。它通常包含了与数据库相关的SQL查询语句的声明,以及这些操作的参数和返回值类型。Mapper 接口与XML文件(MyBatis的映射文件)一起使用,将方法与SQL语句进行映射。


SqlSessionFactory的作用和配置方式


SqlSessionFactory 的作用是创建 SqlSession 对象,它需要配置文件来初始化。配置文件通常包括以下几个关键部分:


数据源配置:指定数据库连接的信息,包括数据库类型、地址、用户名、密码等。


映射文件配置:定义了 Mapper 接口与 SQL 查询语句之间的映射关系。这些映射通常包括 SQL 查询语句的位置、输入参数和输出结果的映射。


全局配置:包括事务管理器的配置、缓存配置、插件配置等。


以下是一个简单的 MyBatis 配置文件的示例:xml

<configuration>
    <!-- 数据源配置 -->
    <dataSource type="POOLED">
        <property name="driver" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/mydb"/>
        <property name="username" value="username"/>
        <property name="password" value="password"/>
    </dataSource>
    <!-- 映射文件配置 -->
    <mappers>
        <mapper resource="com/example/MyMapper.xml"/>
    </mappers>
</configuration>


SqlSession的生命周期和常用方法


SqlSession 的生命周期通常是短暂的,它的创建和销毁应该在一个方法内完成,以确保及时释放数据库资源。SqlSession 的常用方法包括:


selectOne(String statement, Object parameter):执行查询并返回单个结果。
selectList(String statement, Object parameter):执行查询并返回结果列表。
insert(String statement, Object parameter):执行插入操作。
update(String statement, Object parameter):执行更新操作。
delete(String statement, Object parameter):执行删除操作。
commit():提交事务。
rollback():回滚事务。
close():关闭 SqlSession。


Mapper接口的作用和编写方式


Mapper 接口的作用是定义数据访问操作的接口,以及这些操作与 SQL 查询语句的映射关系。Mapper 接口通常不需要手动实现,MyBatis 会在运行时动态生成实现类。


编写 Mapper 接口的方式是创建一个 Java 接口,方法名与映射文件中定义的 SQL 查询语句的 ID 相对应,方法的参数和返回值类型与查询的输入参数和输出结果类型相匹配。例如:java

public interface UserMapper {
    User selectUserById(int id);
    List<User> selectAllUsers();
    void insertUser(User user);
    void updateUser(User user);
    void deleteUser(int id);
}


在映射文件中,可以使用 <mapper> 元素来与 Mapper 接口关联,并定义查询语句的映射关系:

xml

<mapper namespace="com.example.UserMapper">
    <select id="selectUserById" resultType="com.example.User">
        SELECT * FROM users WHERE id = #{id}
    </select>
    <!-- 其他查询语句的映射 -->
</mapper>



通过这种方式,Mapper 接口的方法与 SQL 查询语句建立了映射关系,可以方便地进行数据库操作。 MyBatis 会在运行时生成 Mapper 接口的实现类,具体的数据库操作会在这个实现类中被执行。

10.MyBatis环境搭建

10.1创建Maven项目

打开IDEA创建一个Maven项目命名为mybatis,之后的操作会在Maven项目在演示

10.2pom.xml修改

之后修改pom.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>org.example</groupId>
  <artifactId>mybatis</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>war</packaging>
  <name>mybatis Maven Webapp</name>
  <!-- FIXME change it to the project's website -->
  <url>http://www.example.com</url>
  <properties>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
  </properties>
  <dependencies>
    <!-- ********************** junit单元测试依赖 ********************** -->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
<!--      <scope>test</scope>-->
    </dependency>
    <!-- ********************** Java Servlet API  ********************** -->
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>4.0.0</version>
      <scope>provided</scope>
    </dependency>
    <!-- ********************** Mybatis依赖 ********************** -->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.4.5</version>
    </dependency>
    <!-- ********************** Mysql JDBC驱动 ********************** -->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.44</version>
    </dependency>
    <!-- **********************  日志配置  ********************** -->
    <!--记得修改mybatis.cfg.xml添加如下内容-->
    <!--<setting name="logImpl" value="LOG4J2"/>-->
    <!--核心log4j2jar包-->
    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-core</artifactId>
      <version>2.9.1</version>
    </dependency>
    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-api</artifactId>
      <version>2.9.1</version>
    </dependency>
    <!--web工程需要包含log4j-web,非web工程不需要-->
    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-web</artifactId>
      <version>2.9.1</version>
    </dependency>
  </dependencies>
  <build>
    <finalName>mybatis</finalName>
    <resources>
      <!--解决mybatis-generator-maven-plugin运行时没有将XxxMapper.xml文件放入target文件夹的问题-->
      <resource>
        <directory>src/main/java</directory>
        <includes>
          <include>**/*.xml</include>
        </includes>
      </resource>
      <!--解决mybatis-generator-maven-plugin运行时没有将jdbc.properites文件放入target文件夹的问题-->
      <resource>
        <directory>src/main/resources</directory>
        <includes>
          <include>jdbc.properties</include>
          <include>*.xml</include>
        </includes>
      </resource>
    </resources>
      <plugins>
        <plugin>
          <groupId>org.mybatis.generator</groupId>
          <artifactId>mybatis-generator-maven-plugin</artifactId>
          <version>1.3.2</version>
          <dependencies>
            <!--使用Mybatis-generator插件不能使用太高版本的mysql驱动 -->
            <dependency>
              <groupId>mysql</groupId>
              <artifactId>mysql-connector-java</artifactId>
              <version>5.1.44</version>
            </dependency>
          </dependencies>
          <configuration>
            <overwrite>true</overwrite>
          </configuration>
        </plugin>
        <plugin>
          <artifactId>maven-clean-plugin</artifactId>
          <version>3.1.0</version>
        </plugin>
        <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
        <plugin>
          <artifactId>maven-resources-plugin</artifactId>
          <version>3.0.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.8.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.22.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-war-plugin</artifactId>
          <version>3.2.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-install-plugin</artifactId>
          <version>2.5.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>2.8.2</version>
        </plugin>
      </plugins>
  </build>
</project>


10.3 jdbc.properties

jdbc.properties配置文件:用于输入数据库的用户密码(注意:该配置文件的首字母不能大写)

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://47.100.191.44:3308/mybatis_ssm?useUnicode=true&characterEncoding=UTF-8
jdbc.username=test01
jdbc.password=test01


10.4web.xml

找到maven项目中webapp下WEB-INF的web.xml配置JSP文件修改为:3.1

<!-- 修改web.xml由2.3至3.0 -->
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">
  <display-name>Archetype Created Web Application</display-name>
</web-app>



11.MyBatis的CRUD

11.1编写业务逻辑层

接口类

package com.liao.biz;
import com.liao.model.Book;
public interface BookBiz {
    int deleteByPrimaryKey(Integer bid);
    int insert(Book record);
    int insertSelective(Book record);
    Book selectByPrimaryKey(Integer bid);
    int updateByPrimaryKeySelective(Book record);
    int updateByPrimaryKey(Book record);
}
实现接口
package com.liao.biz.impl;
import com.liao.biz.BookBiz;
import com.liao.mapper.BookMapper;
import com.liao.model.Book;
public class BookBizImpl implements BookBiz {
    private BookMapper bookBiz;
    public BookMapper getBookBiz() {
        return bookBiz;
    }
    public void setBookBiz(BookMapper bookBiz) {
        this.bookBiz = bookBiz;
    }
    @Override
    public int deleteByPrimaryKey(Integer bid) {
        return bookBiz.deleteByPrimaryKey(bid);
    }
    @Override
    public int insert(Book record) {
        return bookBiz.insert(record);
    }
    @Override
    public int insertSelective(Book record) {
        return bookBiz.insertSelective(record);
    }
    @Override
    public Book selectByPrimaryKey(Integer bid) {
        return bookBiz.selectByPrimaryKey(bid);
    }
    @Override
    public int updateByPrimaryKeySelective(Book record) {
        return bookBiz.updateByPrimaryKeySelective(record);
    }
    @Override
    public int updateByPrimaryKey(Book record) {
        return bookBiz.updateByPrimaryKey(record);
    }
}


11.2SqlSession工厂类

package com.liao.utils;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
public class SessionUtil {
    private static SqlSessionFactory sessionFactory;
    private static ThreadLocal<SqlSession> threadLocal = new ThreadLocal<SqlSession>();
    static {
        sessionFactory = new SqlSessionFactoryBuilder().build(SessionUtil.class.getResourceAsStream("/mybatis.cfg.xml"));
    }
    public static SqlSession openSession() {
        SqlSession session = threadLocal.get();
        if (null == session) {
            session = sessionFactory.openSession();
            threadLocal.set(session);
        }
        return session;
    }
    public static void main(String[] args) {
        SqlSession session = openSession();
        System.out.println(session.getConnection());
        session.close();
//        System.out.println(session.getConnection());
    }
}


11.3.测试类

package com.liao.demo;
import com.liao.biz.BookBiz;
import com.liao.biz.impl.BookBizImpl;
import com.liao.mapper.BookMapper;
import com.liao.model.Book;
import com.liao.utils.SessionUtil;
import org.apache.ibatis.session.SqlSession;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
public class Demo {
    private SqlSession sqlSession;
    private BookBiz bookBiz;
    @Before
    public void a(){
        System.out.println("执行测试方法之前会执行的初始化代码块");
        sqlSession= SessionUtil.openSession();
        BookBizImpl bookBiz = new BookBizImpl();
        BookMapper mapper = sqlSession.getMapper(BookMapper.class);
    bookBiz.setBookBiz(mapper);
    this.bookBiz=bookBiz;
    }
    @After
    public void b(){
        System.out.println("执行测试方法之后会执行");
    }
    @Test
    public void test1(){
        Book book = bookBiz.selectByPrimaryKey(35);
        System.out.println(book);
    }
    @Test
    public void test2(){
        int i = bookBiz.deleteByPrimaryKey(35);
        if (i>0){
            System.out.println("删除成功");
        }else {
            System.out.println("删除失败");
        }
    }
}



简单测试查询和删除,其他的就不测试了

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
7月前
|
SQL Java 数据库连接
MyBatis 框架入门理论与实践
MyBatis 框架入门理论与实践
81 6
|
2月前
|
前端开发 Java Apache
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个
本文详细讲解了如何整合Apache Shiro与Spring Boot项目,包括数据库准备、项目配置、实体类、Mapper、Service、Controller的创建和配置,以及Shiro的配置和使用。
486 1
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个
|
6月前
|
XML Java 数据库连接
MyBatis入门——MyBatis XML配置文件(3)
MyBatis入门——MyBatis XML配置文件(3)
87 6
|
6月前
|
Java 关系型数据库 数据库连接
MyBatis入门(1)
MyBatis入门(1)
73 2
|
2月前
|
SQL Java 数据库连接
Mybatis入门(select标签)
这篇文章介绍了Mybatis中`select`标签的基本用法及其相关属性,并通过示例展示了如何配置和执行SQL查询语句。
47 0
Mybatis入门(select标签)
|
4月前
|
Java 数据库连接 Spring
后端框架入门超详细 三部曲 Spring 、SpringMVC、Mybatis、SSM框架整合案例 【爆肝整理五万字】
文章是关于Spring、SpringMVC、Mybatis三个后端框架的超详细入门教程,包括基础知识讲解、代码案例及SSM框架整合的实战应用,旨在帮助读者全面理解并掌握这些框架的使用。
后端框架入门超详细 三部曲 Spring 、SpringMVC、Mybatis、SSM框架整合案例 【爆肝整理五万字】
|
7月前
|
Java 数据库连接 测试技术
MyBatis-Plus入门
MyBatis-Plus入门
|
4月前
|
SQL Java 数据库连接
Spring Boot联手MyBatis,打造开发利器:从入门到精通,实战教程带你飞越编程高峰!
【8月更文挑战第29天】Spring Boot与MyBatis分别是Java快速开发和持久层框架的优秀代表。本文通过整合Spring Boot与MyBatis,展示了如何在项目中添加相关依赖、配置数据源及MyBatis,并通过实战示例介绍了实体类、Mapper接口及Controller的创建过程。通过本文,你将学会如何利用这两款工具提高开发效率,实现数据的增删查改等复杂操作,为实际项目开发提供有力支持。
263 0
|
6月前
|
Java 关系型数据库 数据库连接
技术好文共享:第一讲mybatis入门知识
技术好文共享:第一讲mybatis入门知识
37 6
|
6月前
|
Java 关系型数据库 MySQL
Mybatis入门之在基于Springboot的框架下拿到MySQL中数据
Mybatis入门之在基于Springboot的框架下拿到MySQL中数据
55 4