SpringBoot整合mybatis通用Mapper+自定义通用Mapper方法解析

下面我将详细讲解“SpringBoot整合mybatis通用Mapper+自定义通用Mapper方法解析”的完整攻略。

一、什么是通用Mapper

通用Mapper是Mybatis官方提供的一个插件,它可以自动化生成Mybatis的基本CRUD方法,避免了开发人员重复编写大量类似的Sql代码的繁琐工作。这样能够大大提高开发效率,让我们把重点放在业务逻辑上。

二、SpringBoot整合mybatis通用Mapper

1. 引入依赖

首先,我们需要在pom.xml中引入mybatis-spring-boot-starter和mapper-spring-boot-starter两个依赖。

<dependencies>
    <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>2.1.4</version>
    </dependency>
    <dependency>
        <groupId>tk.mybatis</groupId>
        <artifactId>mapper-spring-boot-starter</artifactId>
        <version>2.1.5</version>
    </dependency>
</dependencies>

2. 配置数据源和mapper扫描

在application.properties中配置数据源和mapper扫描路径。

spring.datasource.url=jdbc:mysql://localhost:3306/test_db?useUnicode=true&characterEncoding=utf8&useSSL=false
spring.datasource.username=username
spring.datasource.password=password
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

mybatis.mapper-locations=classpath:mappers/*.xml

3. 编写实体类和mapper

接下来,我们需要按照约定的规则编写实体类和mapper。

例如,我们先定义一个User实体类:

public class User {
    private Integer id;
    private String name;
    // 省略getter和setter方法
}

然后,我们定义一个UserMapper接口,继承自通用Mapper的接口和tk.mybatis.mapper.common.example.SelectByExampleMapper接口。

public interface UserMapper extends Mapper<User>, SelectByExampleMapper<User> {
    // 这里可以添加自定义方法
}

4. 编写Mapper.xml

最后,我们需要编写Mapper.xml文件,这里就不展示简单的CRUD方法了。我们来看一个自定义方法的示例。

<mapper namespace="com.example.mapper.UserMapper">
    <!-- 根据条件查询用户列表 -->
    <select id="selectByCondition" resultMap="BaseResultMap">
        SELECT
        <include refid="Base_Column_List" />
        FROM user
        WHERE 1 = 1
        <if test="name != null and name != ''">
            AND name like concat('%', #{name}, '%')
        </if>
        <if test="id != null">
            AND id = #{id}
        </if>
    </select>
</mapper>

5. 测试自定义方法

编写好自定义Mapper方法后,我们就可以在Service类中调用该方法了。

@Service
public class UserService {
    @Autowired
    private UserMapper userMapper;

    public List<User> selectByCondition(String name, Integer id) {
        Example example = new Example(User.class);
        example.createCriteria()
                .andLike("name", "%" + name + "%")
                .andEqualTo("id", id);
        return userMapper.selectByExample(example);
    }
}

以上就是SpringBoot整合mybatis通用Mapper的基本流程,没有涉及到一些高级用法,但足以应付大部分开发工作。

三、自定义通用Mapper方法解析

通过上面的例子,我们可以看到自定义通用Mapper方法的调用方式和实际编写一个Mapper方法的步骤是相似的。

自定义通用Mapper方法的步骤如下:

  1. 在Mapper接口中,添加你需要自定义的方法,提供参数和返回值的定义。

  2. 在Mapper.xml中,编写自定义方法的sql语句,参数名和Mapper接口中定义的一致。

  3. 在Service类中,按照自定义方法的定义编写Service方法,然后调用Mapper接口中定义的自定义方法,即可完成对应的业务逻辑。

下面,我们再举一个示例。假如我们要查询所有的用户,并根据年龄和创建时间的先后顺序排序。

  1. 在Mapper接口中,添加自定义方法。
public interface UserMapper extends Mapper<User> {
    List<User> selectAllOrderByAgeAndCreateTimeDesc();
}
  1. 在Mapper.xml中,编写sql语句。
<mapper namespace="com.example.mapper.UserMapper">
    <select id="selectAllOrderByAgeAndCreateTimeDesc" resultMap="BaseResultMap">
        SELECT
        <include refid="Base_Column_List" />
        FROM user
        ORDER BY age ASC, create_time DESC
    </select>
</mapper>
  1. 在Service类中,编写业务逻辑。
@Service
public class UserService {
    @Autowired
    private UserMapper userMapper;

    public List<User> selectAllOrderByAgeAndCreateTimeDesc() {
        return userMapper.selectAllOrderByAgeAndCreateTimeDesc();
    }
}

通过上面的示例,我们可以看到自定义通用Mapper方法的使用方法和常规的Mapper方法的使用方法基本一致。

最后,需要注意的是自定义通用Mapper方法也可以通过Mapper接口的继承来实现,只需要按照规范在对应的Mapper.xml文件中定义Sql语句即可。同时需要注意,自定义的Mapper方法的命名需要和Mapper接口中定义的方法名保持一致。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringBoot整合mybatis通用Mapper+自定义通用Mapper方法解析 - Python技术站

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

相关文章

  • Spring Boot:Idea从零开始初始化后台项目的教程

    完整讲解”Spring Boot: Idea从零开始初始化后台项目的教程”的攻略可以分为以下几个步骤: 环境准备首先,需要准备好JDK、IDEA和Spring Boot。确保它们都已经安装在你的电脑上,并且配置好了环境变量。 创建Spring Boot项目在IntelliJ IDEA中创建一个新的Spring Boot项目,你可以选择它的版本和其他设置。接着…

    Java 2023年5月19日
    00
  • 理解JPA注解@GeneratedValue的使用方法

    JPA(Java Persistence API)是Java EE中关于对象持久化的标准接口,它将对象映射成数据库中的表,使得Java开发者可以直接使用面向对象的思想来操作数据库。其中@GeneratedValue注解是JPA中常用的注解之一。本文将为你详细介绍@GeneratedValue注解的使用方法及注意点。 什么是@GeneratedValue注解?…

    Java 2023年5月20日
    00
  • bootstrap table支持高度百分比的实例代码

    请跟我一起来详细探讨一下 “Bootstrap Table 支持高度百分比的实例代码” 的完整攻略。 1. 准备工作 首先,我们需要在 html 文件中引入必要的 js 和 css 文件: <link rel="stylesheet" href="https://cdn.bootcdn.net/ajax/libs/boot…

    Java 2023年5月23日
    00
  • 九种防MDB数据库被下载的方法小结

    九种防MDB数据库被下载的方法小结 在网站开发中,保护数据库的安全性非常重要。本文将会介绍九种防止Microsoft Access数据库(MDB)被下载的方法。 1. 禁止直接访问MDB文件 在Web服务器上,可以关闭对MDB文件的直接访问。可以使用.htaccess(在Apache服务器上)或web.config(在IIS上)来实现此目的。以下是一个web…

    Java 2023年6月15日
    00
  • 你知道Java的这些骚操作吗?

    当然,没问题! 你知道Java的这些骚操作吗? 1. 位运算 位运算是一种直接对二进制位进行操作的运算,通常用于系统底层开发和优化计算速度。Java内置了多种位运算符,具体有: 按位与(&) 按位或(|) 按位异或(^) 取反(~) 左移位(<<) 右移位(>>) 无符号右移位(>>>) 示例 int a =…

    Java 2023年5月23日
    00
  • hadoop运行java程序(jar包)并运行时动态指定参数

    运行Java程序(JAR包)是Hadoop处理数据的一部分。在本文中,将介绍如何在Hadoop上动态指定参数以运行Java程序。 步骤 1:创建Java工程 创建一个Java工程,编写Hadoop程序,并将其打包成JAR文件。 步骤 2:编写程序的入口类 在Java工程中,我们应该有一个Main类作为程序的入口。在Main类中,需要使用Hadoop提供的To…

    Java 2023年5月26日
    00
  • Java对象的内存布局详细介绍

    Java对象的内存布局是指一个Java对象在内存中的存储方式,通常指的是其在堆内存中的存储方式。它分为三部分:对象头、实例变量和填充字节。接下来我将对Java对象内存布局进行详细的介绍。 对象头 对象头是Java对象的头部分,占据了对象的8到12个字节。对象头存储了对象的元数据信息,包含两部分:对象的Mark Word和对象的Class Pointer。在3…

    Java 2023年5月26日
    00
  • 基于java实现DFA算法代码实例

    关于“基于java实现DFA算法代码实例”的攻略,我会按照以下流程进行讲解: 1.了解DFA算法2.选择适合的编程环境3.编写DFA代码4.测试DFA代码 首先,我们来了解一下DFA算法(确定有限状态自动机算法)的概念和原理。DFA算法主要应用于文本匹配、编译器词法分析等方面。它是一种状态转移图的形式,其中有一个起始状态和若干个终止状态,通过状态转移,将一个…

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