Springboot版本4.0对应的Mybatis Plus(如是最近创建项目出现错误)

springboot4.0对应的依赖

报错出现这个错误

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'textController': Injection of resource dependencies failed

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'utioMapper' defined in file [D:springbootspring_UtioY_V1targetclassescomexampleUtioyV1utiomapperUtioMapper.class]: Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required

Caused by: java.lang.IllegalArgumentException: Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required

依赖:

springboot3的mybatisplus依赖(不用了)

  1. <dependency>
  2. <groupId>com.baomidou</groupId>
  3. <artifactId>mybatis-plus-spring-boot3-starter</artifactId>
  4. <version>3.5.7</version>
  5. </dependency>
  6. <!-- //mysql的jar包-->
  7. <dependency>
  8. <groupId>mysql</groupId>
  9. <artifactId>mysql-connector-java</artifactId>
  10. <version>8.0.26</version>
  11. </dependency>
  12. <!--druid数据库驱动-->
  13. <dependency>
  14. <groupId>com.alibaba</groupId>
  15. <artifactId>druid</artifactId>
  16. <version>1.2.4</version>
  17. </dependency>

springboot4的mybatisplus依赖(使用这个)

  1. <!-- 阿里巴巴开源的 Druid 数据库连接池 -->
  2. <dependency>
  3. <groupId>com.alibaba</groupId>
  4. <artifactId>druid</artifactId>
  5. <version>1.2.27</version>
  6. </dependency>
  7. <!-- 适配springboot4.0 的 mybatis plus 依赖-->
  8. <dependency>
  9. <groupId>com.baomidou</groupId>
  10. <artifactId>mybatis-plus-spring-boot4-starter</artifactId>
  11. <version>3.5.15</version>
  12. </dependency>
  13. <!-- 官方主推的最新稳定版(适配 Java 8-21、MySQL 5.7/8.0/9.0) -->
  14. <dependency>
  15. <groupId>com.mysql</groupId>
  16. <artifactId>mysql-connector-j</artifactId>
  17. <version>9.5.0</version>
  18. <scope>runtime</scope>
  19. </dependency>

1.问题描述

以前使用mybatis-plus的3.5.7版本的时候可以使用到springboot 3.0.x ,但是更新了最新的springboot 如果在使用这个会报映射错误, 在最新的springboot4.0的环境下他需要使用到最新的3.5.15版本

2.错误解决

所以4.0后只需要将 mybatisplus插件换成 3.5.15 就可以使用

然后在配置yml(需要修改数据库名称utio和username和password)

  1. ---
  2. spring:
  3. datasource:
  4. #rewriteBatchedStatements做批处理
  5. url: 'jdbc:mysql://127.0.0.1:3306/utio?characterEncoding=utf8&autoReconnect=true&autoReconnectForPools=true&connectTimeout=0&useSSL=false&allowMultiQueries=true&rewriteBatchedStatements=true'
  6. username: 'root'
  7. password: '123456'
  8. driver-class-name: 'com.mysql.cj.jdbc.Driver'
  9. #druid数据库连接池
  10. type: com.alibaba.druid.pool.DruidDataSource
  11. ---
  12. # mybatis-plus相关配置
  13. mybatis-plus:
  14. mapper-locations: classpath*:/mapper/*.xml # 查询的地址
  15. # mapper-locations: classpath*:/mapper/*.xml # 查询的地址
  16. # 以下配置均有默认值,可以不设置
  17. configuration:
  18. # 开启自动驼峰命名下划线转大写
  19. map-underscore-to-camel-case: false
  20. # 如果查询结果中包含空值的列,则 MyBatis 在映射的时候,不会映射这个字段
  21. call-setters-on-nulls: true
  22. # 这个配置会将执行的sql打印出来,在开发或测试的时候可以用
  23. # log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  24. cache-enabled: false #关闭二级缓存
  25. ---

3.创建mapper文件

<

  1. <?xml version='1.0' encoding='UTF-8'?>
  2. <!DOCTYPE mapper
  3. PUBLIC '-////DTD Mapper 3.0//EN'
  4. 'http:///dtd/mybatis-3-mapper.dtd'>
  5. <mapper namespace='com.example.UtioyV1.utio.mapper.UtioMapper'>
  6. <!-- 批量插入日志:insert_log(List<LogEntry> logs) -->
  7. <insert id='save_log' parameterType='java.util.List'>
  8. INSERT INTO sys_log (
  9. type,
  10. message,
  11. user,
  12. level,
  13. reserved,
  14. create_time
  15. ) VALUES
  16. <!-- 遍历List集合,拼接多条值 -->
  17. <foreach collection='list' item='log' separator=','>
  18. (
  19. #{log.type},
  20. #{log.message},
  21. #{log.user},
  22. #{log.level.value}, <!-- 枚举转字符串:取枚举名称(INFO/ERROR) -->
  23. #{log.reserved},
  24. #{log.create_time}
  25. )
  26. </foreach>
  27. </insert>
  28. </mapper>

4.导入Mappe

@MapperScan('com.example.*.mapper') //扫描com.example.UtioyV1.mapper下的依赖

5.导入

  1. @Mapper
  2. public interface UtioMapper{
  3. Integer save_log(@Param('list') List<LogEntryModel> log);
  4. }

6.问题详细

main方法注解

@SpringBootApplication @MapperScan('com.example.minio_web_3.plus.mapper') public class MinioWeb3Application { public static void main(String[] args) { SpringApplication.run(MinioWeb3Application.class, args); } }