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日

相关文章

  • java连接Oracle数据库的工具类

    下面是详细讲解 “Java连接Oracle数据库的工具类” 的完整攻略: 1. 准备工作 首先需要在本地或者服务器上安装Oracle数据库软件并成功启动,并在其上创建一个数据库实例,同时需要知道该实例的连接信息(IP地址、端口号、数据库名称、用户名、密码)。 然后需要在Java项目中引入Oracle JDBC驱动的jar包,例如ojdbc6.jar。 2. …

    Java 2023年5月20日
    00
  • 纯css+js写的一个简单的tab标签页带样式

    下面是详细的攻略: 1. 简介 在网页设计中,常见的需求是需要通过标签页来展示内容,这时候就需要用到一个叫做“Tab标签页”的组件。Tab标签页可以让我们在有限的空间内,方便地切换内容,增加页面的互动性,使页面看起来更加充实。 本文将介绍一种纯CSS+JS的方式来实现一个简单的Tab标签页,并带有基本的样式,让菜鸟级别的前端设计师也能够轻松上手。 2. 实现…

    Java 2023年6月15日
    00
  • Java构造代码块,静态代码块原理与用法实例分析

    当我们创建Java对象时,会自动对对象进行初始化。除了对属性进行初始化外,我们还可以利用代码块来进行初始化操作。其中Java构造代码块和静态代码块都是常见的初始化方式。 构造代码块 构造代码块是一种在类中直接使用非静态代码块的方式来对实例进行初始化的机制。它只跟随构造函数一起执行,例如: public class CodeBlockExample { { S…

    Java 2023年5月23日
    00
  • springMVC的生命周期详解

    Spring MVC的生命周期详解 Spring MVC是什么 Spring MVC 是构建于 Spring Framework 之上的一个与 Servlet API 无关的 Web 框架。相比于传统的 Servlet,使用 Spring MVC 可以更快地开发 Web 应用程序,它也更加灵活、可扩展和可配置。 Spring MVC的生命周期 Spring …

    Java 2023年5月16日
    00
  • 解决springboot 部署到 weblogic 中 jar 包冲突的问题

    为了解决SpringBoot部署到WebLogic中Jar包冲突的问题,我们需要遵循以下步骤: 1. 排查Jar包冲突 在运行过程中,我们需要关注控制台输出的错误信息,尤其是关于Jar包冲突的信息。其中包含有关Arifact ID和Version的信息。使用Maven或Gradle构建项目时,我们需要检查项目的依赖关系(pom.xml或build.gradl…

    Java 2023年5月20日
    00
  • SpringBoot使用Jsp的示例代码

    下面是 Spring Boot 使用 JSP 的详细攻略,内容包括: 添加 Maven 依赖 配置 Spring Boot 创建 JSP 页面 创建 Controller 类 运行并访问页面 1. 添加 Maven 依赖 首先在 pom.xml 文件中添加以下依赖: <dependencies> <dependency> <gr…

    Java 2023年6月15日
    00
  • Java-String类最全汇总(上篇)

    我来详细讲解一下“Java-String类最全汇总(上篇)”这篇文章的完整攻略。 首先,这篇文章主要介绍了Java中的String类及其相关知识点,包括字符串的创建、字符串常用方法、字符串比较、字符串格式化等内容。 在文章中,对于字符串的创建部分,作者详细介绍了使用字符串字面值、构造函数、字符串缓冲区等方式创建字符串的方法和使用场景,并且给出了示例说明。例如…

    Java 2023年5月26日
    00
  • Java垃圾回收之标记清除算法详解

    Java垃圾回收之标记清除算法详解 什么是垃圾回收算法 垃圾回收算法是一种自动管理内存的机制,用于自动回收不再使用的内存空间。 Java 中垃圾回收算法主要有标记清除算法、复制算法、标记整理算法和分代收集算法。 标记清除算法 标记清除算法是最简单的一种垃圾回收算法,它分为两个步骤:标记和清除。 标记 标记可以理解为“识别”不再使用的对象,通常从“根对象”开始…

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