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日

相关文章

  • IDEA中用maven连接数据库的教程

    当使用IntelliJ IDEA作为Java开发工具时,可以使用Maven连接数据库。该过程涉及到以下步骤: 配置数据库驱动程序 在项目的pom.xml文件中添加数据库驱动程序的依赖。例如,如果你要使用MySQL数据库,你可以添加以下依赖: <dependency> <groupId>mysql</groupId> &lt…

    Java 2023年5月20日
    00
  • 图书管理系统java版

    “图书管理系统java版”完整攻略 1. 简介 “图书管理系统java版”是一个用Java语言开发的图书管理系统,旨在提供一个方便管理图书信息的工具,可实现添加、删除、修改、查询等功能。 2. 环境搭建 在开始使用“图书管理系统java版”之前,需要先搭建Java环境和数据库环境。具体步骤如下: 下载安装Java开发工具包(JDK),建议使用最新版本。 下载…

    Java 2023年5月20日
    00
  • JS实现改变HTML上文字颜色和内容的方法

    要实现改变HTML上文字颜色和内容,需要掌握以下知识: 从HTML DOM中获取元素:使用document对象下的方法,如getElementById等,获取需要改变的元素节点。 更改元素样式:使用style对象下的属性,如color,backgroundColor等,改变元素样式。 更改元素内容:使用innerHTML属性,将元素内容替换为新的内容。 下面…

    Java 2023年5月26日
    00
  • 浅谈Mybatis获取参数值的方式

    下面是详细的“浅谈Mybatis获取参数值的方式”的攻略。 前言 在Mybatis中获取参数值是常见的操作。本文将向你介绍Mybatis中获取参数值的方式,帮助你更好的使用Mybatis。 直接获取参数名 可以直接在Mapper方法的参数中来获取实际传入参数的名称和值。 代码示例 public interface UserMapper{ void inser…

    Java 2023年5月20日
    00
  • 小伙熬夜用Java重现经典超级马里奥代码实例

    下面我来详细讲解“小伙熬夜用Java重现经典超级马里奥代码实例”的完整攻略。 1. 准备工作 首先,我们需要准备一些工具和环境。 1.1 编程语言本次重现经典超级马里奥代码的编程语言为Java,所以我们需要先安装JDK并配置好环境变量。 1.2 IDEIDE是开发Java程序必不可少的,选择一款自己喜欢的IDE,比如Eclipse或者IntelliJ IDE…

    Java 2023年5月23日
    00
  • Spring Boot web项目的TDD流程

    SpringBoot Web项目的TDD流程 TDD(Test-Driven Development)是一种软件开发方法,它强调在编写代码之前先编写测试用例,并通过测试用例来驱动代码的开发。在SpringBoot Web项目中,TDD可以帮助我们提高代码质量和可维护性,减少代码缺陷和重构成本。以下是一个完整的SpringBoot Web项目的TDD流程: 1…

    Java 2023年5月15日
    00
  • java实现动态数组

    下面是关于Java实现动态数组的完整攻略: 什么是动态数组? 动态数组,简称为ArrayList,是在Java中使用较为广泛的数据结构之一。它是一种可变数组,可以根据需要自动扩展数组的大小。与传统的数组不同,动态数组的大小是可以根据需求动态增长或者缩小的。 Java中动态数组的实现 在Java中,动态数组的实现是通过内部维护一个Object数组来实现。当需要…

    Java 2023年5月26日
    00
  • springBoot集成mybatis 转换为 mybatis-plus方式

    以下是使用springBoot集成mybatis转换为mybatis-plus的完整攻略。 1. 添加mybatis-plus依赖 <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</art…

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