SpringBoot+Mybatis实现Mapper接口与Sql绑定几种姿势

下面我将为你详细讲解“SpringBoot+Mybatis实现Mapper接口与Sql绑定几种姿势”的完整攻略。

1. 概述

在使用Mybatis时,我们需要将Mapper接口与SQL进行绑定,以便可以方便地在Java代码中调用。在SpringBoot项目中,我们可以采用多种方式来实现Mapper接口与SQL的绑定。

本文将介绍三种实现Mapper接口与SQL绑定的方式,分别为XML配置文件方式、注解方式和Mapper接口与Mapper映射文件配合使用的方式。

2. 示例项目说明

为了便于演示,我们假设有一个简单的数据库表“user”,包含字段“id”和“name”。我们需要通过Mybatis框架来对该表进行增、删、改、查操作。

在本文中,我们使用SpringBoot框架来搭建项目,并在其中集成Mybatis框架。同时,我们使用MySQL作为数据库。

项目结构如下:

└─src
    └─main
        ├─java
        |   └─com.example.demo
        |           ├── DemoApplication.java
        |           ├── mapper
        |           |   └─UserMapper.java
        |           ├── model
        |           |   └─User.java
        |           └── service
        |               └─impl
        |                   └─UserServiceImpl.java
        └─resources
            ├── application.properties
            ├── mapper
            |   └─UserMapper.xml
            ├── static
            └── templates

其中,“mapper”目录下包含两个文件,“UserMapper.xml”用于存放SQL语句,“UserMapper.java”用于定义Mapper接口。用户实体类“User.java”存放在“model”目录下,服务实现类“UserServiceImpl.java”存放在“service\impl”目录下。数据库连接信息、以及一些Mybatis相关的配置信息都在“application.properties”文件中。

3. XML配置文件方式

3.1 配置Mapper接口

首先,我们需要定义一个Mapper接口,用于映射SQL语句。在本例中,我们定义了一个“UserMapper”接口,用于对“user”表进行操作。代码如下:

@Mapper
public interface UserMapper {
    User selectUserById(int id);
}

在接口上加上@Mapper注解,表示该接口是一个Mapper接口。

3.2 编写Mapper映射文件

接下来,我们需要编写一个XML文件,用于配置Mapper接口的SQL语句。在本例中,我们命名该文件为“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.example.demo.mapper.UserMapper">
    <select id="selectUserById" resultType="com.example.demo.model.User">
        select * from user where id = #{id}
    </select>
</mapper>

其中,“namespace”属性指向Mapper接口的类全名,定义了一个“select”节点,指定了SQL语句和返回结果集的类型。

3.3 使用Mapper接口

在接口中定义好方法和SQL语句之后,我们可以在服务实现类中使用Mapper接口进行SQL操作。代码如下:

@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private UserMapper userMapper;

    @Override
    public User getUserById(int id) {
        return userMapper.selectUserById(id);
    }
}

在服务实现类中,我们使用@Autowired注解将Mapper接口注入到Service中。然后,就可以通过该Mapper接口调用SQL语句进行操作了。

4. 注解方式

4.1 配置Mapper接口

除了XML配置文件方式,Mybatis还支持使用注解方式来绑定Mapper接口和SQL语句。在本例中,我们可以使用@Select注解来为Mapper接口绑定SQL语句。代码如下:

@Mapper
public interface UserMapper {
    @Select("select * from user where id = #{id}")
    User selectUserById(int id);
}

在Mapper接口的方法上,我们使用@Select注解来绑定SQL语句。

4.2 使用Mapper接口

在服务实现类中,直接使用@Autowired注解来注入Mapper接口。代码如下:

@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private UserMapper userMapper;

    @Override
    public User getUserById(int id) {
        return userMapper.selectUserById(id);
    }
}

在服务实现类中,我们直接使用(@Autowired)注解将Mapper接口注入到Service中。然后,就可以通过该Mapper接口调用SQL语句进行操作了。

5. Mapper接口与Mapper映射文件配合使用的方式

5.1 配置Mapper接口

除了单独使用XML配置文件或注解,Mybatis还支持使用Mapper接口与Mapper映射文件配合使用的方式。在该方式中,我们可以将SQL语句定义在XML文件中,然后在Mapper接口中引用该文件。代码如下:

@Mapper
public interface UserMapper {
    User selectUserById(int id);
}

在Mapper接口中,我们只需要定义一个方法即可。

5.2 编写Mapper映射文件

接下来,我们需要编写一个XML文件,用于配置SQL语句。在本例中,我们命名该文件为“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.example.demo.mapper.UserMapper">
    <select id="selectUserById" resultType="com.example.demo.model.User">
        select * from user where id = #{id}
    </select>
</mapper>

与上文中XML配置文件方式相同,我们定义了一个“select”节点,指定了SQL语句和返回结果集的类型。

5.3 使用Mapper接口

在服务实现类中,我们需要使用@MapperScan注解来扫描Mapper接口所在的包路径,并把它交给Spring管理。代码如下:

@SpringBootApplication
@MapperScan("com.example.demo.mapper")
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

}

在服务实现类中,我们直接使用@Autowired注解来注入Mapper接口。代码如下:

@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private UserMapper userMapper;

    @Override
    public User getUserById(int id) {
        return userMapper.selectUserById(id);
    }
}

在服务实现类中,我们直接使用@Autowired注解将Mapper接口注入到Service中。然后,就可以通过该Mapper接口调用SQL语句进行操作了。

6. 总结

本文分别介绍了XML配置文件方式、注解方式和Mapper接口与Mapper映射文件配合使用的方式来实现Mapper接口与SQL绑定。虽然这三种方式各有优缺点,但它们都能够很好地配合SpringBoot框架和Mybatis框架使用,方便地进行数据库操作。

完整的项目代码请参考我的Github

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringBoot+Mybatis实现Mapper接口与Sql绑定几种姿势 - Python技术站

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

相关文章

  • Java构造方法 super 及自定义异常throw合集详解用法

    Java构造方法 super 及自定义异常 throw 合集详解用法 构造方法 super Java中一个类可以有多个构造方法,开发者可以选择不同的构造方法来满足不同的需求,但是必须保证类中至少存在一个构造方法。在子类构造方法中除了继承父类构造方法外,还有另外一种重要的方式——调用父类构造方法,可以使用super()或super(参数)语句来实现。 supe…

    Java 2023年5月27日
    00
  • MybatisPlus如何处理Mysql的json类型

    下面是MybatisPlus如何处理MySQL的Json类型的攻略: 背景 MySQL从5.7开始支持Json类型。对于Java开发者来说,通常使用json字符串表示json类型的数据。在开发过程中,可能需要把json字符串映射成Java对象并进行持久化或者把Java对象转换成json字符串进行传输。在使用MybatisPlus做ORM开发时,可以通过使用@…

    Java 2023年5月26日
    00
  • 命令行编译和执行java代码

    虽然现在IDE很强大又很智能,但是平常随意写点练手的代码的时候,直接在命令行中使用vim和java命令更为方便快捷,可以做到无鼠标纯键盘的操作。 首先保证将java相关指令添加到了环境变量中; 1.编译class文件: javac -d ./ Test.java 编译好的class文件会放置到环境当前目录 (./)中。-d命令的作用是:如果在java文件中定…

    Java 2023年5月4日
    00
  • java JVM原理与常识知识点

    Java JVM原理与常识知识点 Java虚拟机(Java Virtual Machine,JVM)是Java语言实现跨平台的核心部件。它是一个用来执行Java字节码的虚拟机,Java源文件被编译成能够运行在JVM上的字节码文件。因此,深入了解JVM的原理是Java编程中必不可少的一部分。 本文将从以下几个方面进行讲解Java JVM原理与常识知识点:- J…

    Java 2023年5月24日
    00
  • Java实现无损Word转PDF的示例代码

    下面是详细讲解“Java实现无损Word转PDF的示例代码”的完整攻略。 1. 准备工作 在开始转换 Word 文档为 PDF 文件之前,需要进行一些准备工作: 安装相应的 Java 开发环境 引入相应的依赖库 将需要转换为 PDF 的 Word 文档准备好 2. 示例代码1 – 使用Apache POI进行文档转换 import java.io.File;…

    Java 2023年5月19日
    00
  • java(包括springboot)读取resources下文件方式实现

    下面是详细讲解“java(包括springboot)读取resources下文件方式实现”的完整攻略。 1. 背景 在Java中,经常需要读取resources下的文件。resources文件夹通常位于项目的classpath下,可以存放各种类型的文件,如文本文件、配置文件、图片等。这里将对读取resource文件夹下文件的几种常用方法进行讲解。 2. 使用…

    Java 2023年5月19日
    00
  • String类型转localDate,date转localDate的实现代码

    首先,我们需要了解Java中日期类型的概念。在Java 8之前,我们通常使用java.util.Date类来处理日期,但是这个类在很多方面都存在问题。因此,在Java 8 中引入了java.time包,提供了全新的日期和时间API,其中LocalDate是处理日期的主要类之一。 String类型转LocalDate 将String类型转换为LocalDate…

    Java 2023年5月20日
    00
  • Struts 2中实现Ajax的三种方式

    Struts 2 是一个基于MVC设计模式的Web框架,既支持传统的同步请求,也可以通过 Ajax 技术实现异步请求。在 Struts 2 框架中,实现 Ajax 的方式有以下三种: 1. 使用Struts2提供的<s:url>标签 Struts 2 提供了 <s:url> 标签,该标签可以在页面中生成一个 URL 地址,当用户点击或…

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