SpringBoot集成MybatisPlus报错的解决方案

接下来我将为您提供关于“SpringBoot集成MybatisPlus报错的解决方案”的完整攻略。

问题描述

在SpringBoot项目中集成MybatisPlus时,可能会遇到以下报错信息:

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'xxxMapper' defined in file ... xxxMapper.java: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required

该错误提示“Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required”表明,在配置Mapper时,没有为Mapper添加合适的SessionFactory或SessionTemplate属性。

解决方案

要解决该问题,需要对MybatisPlus和SpringBoot进行相应的配置。

步骤一:添加MybatisPlus的依赖

在项目的pom.xml文件中,添加MybatisPlus的依赖:

<dependency>
  <groupId>com.baomidou</groupId>
  <artifactId>mybatis-plus-boot-starter</artifactId>
  <version>3.4.3.1</version>
</dependency>

步骤二:添加MybatisPlus的配置

在SpringBoot项目的application.yml或者application.properties中,添加MybatisPlus的配置,如下所示:

mybatis:
 mapper-locations: classpath*:mapper/*.xml
 configuration:
   log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

上述配置中,mapper-locations属性表示Mapper文件所在的位置,一般为classpath:mapper/.xml;configuration属性用于设置Mybatis的基本属性,如日志输出等。

步骤三:添加DataSource和SessionFactory配置

在SpringBoot项目的application.yml或者application.properties中,添加DataSource和SessionFactory配置,示例如下:

spring:
 datasource:
   driver-class-name: com.mysql.jdbc.Driver
   url: jdbc:mysql://${mysql.ip}:${mysql.port}/${mysql.database}?useUnicode=true&characterEncoding=UTF-8&useSSL=false
   username: ${mysql.username}
   password: ${mysql.password}
   hikari:
     minimum-idle: 5
     maximum-pool-size: 100
     connection-test-query: SELECT 1
 mybatis-plus:
   configuration:
     map-underscore-to-camel-case: true
   mapper-locations: classpath*:mapper/**/*.xml

上述配置中,dataSource属性包含了关于数据库连接的一些基本信息,如驱动类、URL、用户名和密码等;SessionFactory属性则由MybatisPlus自动配置。

步骤四:添加Mapper和扫描Mapper配置

在SpringBoot项目的Mapper接口中,添加@Mapper注解;同时,在SpringBoot项目的启动类上,添加@MapperScan注解,如下所示:

@Mapper
public interface UserMapper extends BaseMapper<User> {
}
@SpringBootApplication
@MapperScan("com.example.demo.mapper")
public class DemoApplication {

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

}

示例一

下面给出一个完整的示例。

User实体类

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class User {
  private Long id;
  private String name;
}

UserMapper接口

@Mapper
public interface UserMapper extends BaseMapper<User> {
}

UserService接口

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

UserServiceImpl实现类

@Service
public class UserServiceImpl implements UserService {

  @Autowired
  private UserMapper mapper;

  @Override
  public List<User> findAll() {
    return mapper.selectList(null);
  }
}

UserController接口

@RestController
@RequestMapping("/users")
public class UserController {

  @Autowired
  private UserService userService;

  @GetMapping
  public List<User> findAll() {
    return userService.findAll();
  }
}

application.yml配置文件

spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&useSSL=false
    username: root
    password: root
    hikari:
      minimum-idle: 5
      maximum-pool-size: 100
      connection-test-query: SELECT 1
mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  mapper-locations: classpath*:mapper/**/*.xml

数据库表结构

CREATE TABLE `user` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '自增主键',
  `name` varchar(20) DEFAULT NULL COMMENT '姓名',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

示例二

下面给出第二个示例。

Book实体类

@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class Book {
  private Long id;
  private String name;
}

BookMapper接口

@Mapper
public interface BookMapper extends BaseMapper<Book> {
}

BookController接口

@RestController
@RequestMapping("/books")
public class BookController {

  @Autowired
  private BookMapper mapper;

  @GetMapping
  public List<Book> findAll() {
    return mapper.selectList(null);
  }

}

application.yml配置文件

spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&useSSL=false
    username: root
    password: root
    hikari:
      minimum-idle: 5
      maximum-pool-size: 100
      connection-test-query: SELECT 1
mybatis-plus:
  configuration:
    map-underscore-to-camel-case: true
  mapper-locations: classpath*:mapper/**/*.xml

数据库表结构

CREATE TABLE `book` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '自增主键',
  `name` varchar(20) DEFAULT NULL COMMENT '书名',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

以上就是完整的“SpringBoot集成MybatisPlus报错的解决方案”攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringBoot集成MybatisPlus报错的解决方案 - Python技术站

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

相关文章

  • request.getParameter()取值为null的解决方法

    当使用request.getParameter()方法获取HTTP请求参数时,有时候会遇到值为null的情况。这可能是由于以下原因导致的: 没有传递对应参数的值 参数值为空字符串 “” 参数名不存在 针对这种情况,一些解决方法如下: 1. 使用默认值 可以使用Java8引入的Optional类型和orElse方法来设置默认值。示例代码如下: String u…

    Java 2023年6月15日
    00
  • LINQ教程之使用Lambda表达式

    很高兴为您讲解“LINQ教程之使用Lambda表达式”的完整攻略。 什么是Lambda表达式 Lambda表达式源于函数式编程,是一种简洁的表达方式。在C#中,Lambda表达式被用来编写LINQ查询、事件处理程序、委托等。 Lambda表达式的格式如下: (argument-list) => expression 其中,argument-list 是…

    Java 2023年5月19日
    00
  • spring+netty服务器搭建的方法

    让我们来详细讲解一下“spring+netty服务器搭建的方法”的完整攻略。 简介 Spring是一个流行的Java框架,提供了许多优秀的特性,如依赖注入、切面编程等。Netty是一个高性能的网络通信框架,可以用来构建异步、事件驱动的网络应用程序。将两者结合起来可以搭建出高性能、强大的Web服务器。 步骤 以下是搭建Spring+Netty服务器的步骤: 1…

    Java 2023年5月19日
    00
  • Spring oxm入门实例

    Spring OXM 简介 Spring OXM 是 Spring Framework 中的一个模块,主要用于支持对象到 XML 和 XML 到对象的互相转换。OXM 是 Object/XML Mapping 的缩写,常用于系统之间的数据传输或存储,例如将 Java 对象序列化为 XML 格式存入数据库或者网络传输,另一方也可以将 XML 格式还原为 Jav…

    Java 2023年5月20日
    00
  • java以json格式向后台服务器接口发送请求的实例

    下面我来详细讲解「Java以JSON格式向后台服务器接口发送请求的实例」: 1.什么是JSON JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。在前后端通信的接口中,JSON格式被广泛应用。它具有易读性好、可解析性强等特点,通常使用键值对表示数据。键值对之间使用冒号(:)分割,不同的键值对之间使用逗号(,)分割,键…

    Java 2023年5月26日
    00
  • Java SpringBoot开发小技巧详解

    JavaSpringBoot开发小技巧详解 简介 Java Spring Boot是一种轻量级开发框架,可以简化Java Web应用程序的开发过程。在Spring Boot中,许多常见的配置都可以自动配置,从而使得开发者可以专注于业务逻辑而不必浪费太多时间在初始化过程上。本文将介绍几个在Java Spring Boot开发中常用的小技巧,以及它们的使用方法。…

    Java 2023年5月15日
    00
  • Java实现解析dcm医学影像文件并提取文件信息的方法示例

    Sure! 首先需要明确的是,“dcm医学影像文件”是DICOM格式的医学影像文件,其中包含了病人的医学影像信息。其次,Java解析DICOM文件需要用到专门的库,常用的有dcm4che和ImageJ等。 下面是Java实现解析dcm医学影像文件并提取文件信息的步骤和示例: 准备工作 下载dcm4che库(https://sourceforge.net/pr…

    Java 2023年5月20日
    00
  • java CompletableFuture实现异步编排详解

    Java CompletableFuture实现异步编排详解 Java中Future,CompletableFuture这两个类非常强大,可以帮助我们完成异步编程。在这里,我们将介绍如何使用Java的CompletableFuture类来实现异步编排的详细攻略。 CompletableFuture的介绍 CompletableFuture是Java 8中新增…

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