Springboot3.3 + Mybatis / Mybatis-plus

Java17,  Springboot 3.3.5,  项目一启动就报错:

Invalid value type for attribute 'factoryBeanObjectType': java.lang.String

我知道问题出现在pom依赖的版本上。但网上对于Springboot3.3的配置资料并不多,且在我代码上实测还是会报错。搞了一天终于解决了,希望能对同样问题的人有帮助。

Springboot + Mybatis

项目结构

我的pom文件

依赖配置是成功的一半。。。其中 mybatis-plus-spring-boot3-starter 是最重要的!

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.3.5</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.example</groupId><artifactId>demo</artifactId><version>0.0.1-SNAPSHOT</version><name>demo</name><description>demo</description><url/><licenses><license/></licenses><developers><developer/></developers><scm><connection/><developerConnection/><tag/><url/></scm><properties><java.version>17</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!-- mysql驱动依赖 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.28</version></dependency><!-- MyBatisPlus依赖 --><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-spring-boot3-starter</artifactId><version>3.5.5</version></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><excludes><exclude><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></exclude></excludes></configuration></plugin></plugins></build></project>

我的application.properties

spring.application.name=demo
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/数据库名?useSSL=false
spring.datasource.username=root
spring.datasource.password=密码
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
server.port=8080

才知道这种格式和下面这种是不通用的..

spring:application.name:demodatasource:driver-class-name:com.mysql.jdbc.Driverurl:jdbc:mysql://localhost:3306/数据库名?useSSL=false......

我的数据库

navicat里创建表,随便填几个数据

测试一下

配置完这些,可以在测试类里测一下,是否连接成功。这里成功了再接着往下做。

package com.example.demo;
import jakarta.annotation.Resource;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import javax.sql.DataSource;
import java.sql.SQLException;@SpringBootTest
class DemoApplicationTests {@ResourceDataSource dataSource;@Testvoid contextLoads() throws SQLException {System.out.println("获取的数据库连接为:"+ dataSource.getConnection());}
}

我的entity

@Data
// 这里亲测不需要写表名
public class User {private int id;private String name;public int getId() {return id;}public String getName() {return name;}public void setId(int id) {this.id = id;}public void setName(String name) {this.name = name;}@Overridepublic String toString() {return "User{" +"id=" + id +", name='" + name + '\'' +'}';}
}

我的Mapper

package com.example.demo.mapper;
import com.example.demo.entity.User;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.*;
import java.util.List;@Mapper
public interface UserMapper{// 在sql语句中指定表名即可@Select("select * from user0")List<User> find();@Select("select * from user0 where id=#{id}")User selectById(int id);
}

我的Controller

package com.example.demo.controller;
import com.example.demo.mapper.UserMapper;
import com.example.demo.entity.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.List;@RestController
public class UserController {@Autowiredprivate UserMapper userMapper;@GetMapping("/user")public void query(){List<User> list = userMapper.find();System.out.println(list);User user = userMapper.selectById(1);System.out.println(user);}
}

我的Application

package com.example.demo;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
@MapperScan("com.example.demo.mapper")    //不要忘记
public class HelloApplication {public static void main(String[] args) {SpringApplication.run(HelloApplication.class, args);}
}

OK,可以运行Application了!结果如下:

Springboot + Mybatis-plus

pom,properties配置,数据库都不用改动。

改动1:entity

如果你的表名和类名不同(不区分大小写),比如我的表名是user0,类名为User。那么需要新增注解。

@Data
@TableName("user0")
public class User {private int id;private String name;......
}

改动2:Mapper

继承BaseMapper以后,不需要我们再去定义方法了,只需要调用BaseMapper里的方法即可。

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

改动3:Controller

@RestController
public class UserController {@Autowiredprivate UserMapper userMapper;@GetMapping("/user")public void query(){// 查询,selectList括号内写条件List<User> list = userMapper.selectList(null);System.out.println(list);// 条件查询QueryWrapper queryWrapper = new QueryWrapper();queryWrapper.eq("name","zhangsan");List<User> user = userMapper.selectList(queryWrapper);System.out.println(user);}
}

再次运行Application即可成功。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/59385.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

高亚科技签约酸动力,助力研发管理数字化升级

近日&#xff0c;中国企业管理软件资深服务商高亚科技与广东酸动力生物科技有限公司&#xff08;以下简称“酸动力”&#xff09;正式签署合作协议。借助高亚科技的8Manage PM项目管理软件&#xff0c;酸动力将进一步优化项目过程跟踪与节点监控&#xff0c;提升研发成果的高效…

java 实训第12天 (git版本控制继续)

Linux下使用到的命令&#xff1a; ls -al //查看当前目录下的文件及文件夹 mkdir //新建目录 rm -rf //递归强制删除文件夹 版本控制 一、安装配置 1、下载地址 https://git-scm.com/ 2、初始配置 #用户名 git config --global user.n…

15分钟学 Go 第 35 天:Go的性能调优 (7000字详细教程)

第35天&#xff1a;Go的性能调优 目标&#xff1a;理解Go语言中基本的性能优化&#xff0c;学习如何分析和提高Go程序的执行效率。 一、性能调优概述 性能调优是软件开发中的一个重要环节&#xff0c;它可以确保程序在资源有限的环境下高效运行。Go语言天生具备高效的性能表现…

Linux APT 教程:从入门到精通

APT&#xff08;Advanced Package Tool&#xff09;是Debian及其衍生发行版&#xff08;如Ubuntu&#xff09;中的一个强大且用户友好的软件包管理工具。它允许用户轻松地安装、更新、升级和卸载软件包&#xff0c;同时处理复杂的依赖关系。本教程将从入门到精通&#xff0c;带…

java多线程编程(二)一一>线程安全问题, 单例模式, 解决程线程安全问题的措施

引言&#xff1a; 如果多线程环境下代码运行的结果是符合我们预期的&#xff0c;即在单线程环境应该的结果&#xff0c;则说这个程序是线程安全的 线程安全问题的原因&#xff1a; 一.操作系统的随机调度 &#xff1a; 二.多个线程修改同一个变量&#xff1a; 三.修改操作不是…

推荐一款非常好用的视频编辑软件:Movavi Video Editor Plus

MovaviVideoEditorPlus(视频编辑软件)可以制作令人惊叹的视频&#xff0c;即使您没有任何视频编辑方面的经验! 该款视频编辑程序没有复杂的设置&#xff0c;只需进行直观的拖放控制。在您的电脑上免费使用MovaviVideoEditor亲身体验它的简单易用性与强大功能! 基本简介 您是否…

Pimpl(Pointer to Implementation)模式详解

Pimpl&#xff08;Pointer to Implementation&#xff09;模式详解 在 C 中&#xff0c;Pimpl 模式&#xff08;Pointer to Implementation&#xff09;是一种设计技巧&#xff0c;常用于隐藏实现细节&#xff0c;减少头文件的依赖。这种模式又被称为“隐式实现”或“编译防护…

js下载excel示例demo

<Buttontype{"primary"}key"out"onClick{async ()>{const ExportJsonExcel require("js-export-excel");const datas selectedRowsState //确保勾到的数据是一个列表&#xff0c;列表中每个值是字典const option {};const dataTable […

mac 修改启动图图标数量

调整每行显示图标数量&#xff1a; defaults write com.apple.dock springboard-rows -int 7 调整每列显示的数量 defaults write com.apple.dock springboard-columns -int 8 最后重置一下启动台 defaults write com.apple.dock ResetLaunchPad -bool TRUE;killall Dock 其…

Go使用SIMD指令——以string转为整数为例

本文Go使用SIMD指令采用如下方式&#xff1a; C编写对应的程序clang编译成汇编c2goasm将上述生成的汇编转为go的汇编 准备工具 clang。直接使用apt-get install clang安装即可c2goasm。 go get -u github.com/minio/c2goasm来进行安装asm2plan9s。 go get -u github.com/min…

【算法】递归+深搜+哈希表:889.根据前序和后序遍历构造二叉树

目录 1、题目链接 相似题目: 2、题目 ​3、解法&#xff08;针对无重复值&#xff0c;哈希表递归&#xff09; 函数头-----找出重复子问题 函数体---解决子问题 4、代码 1、题目链接 889.根据前序和后序遍历构造二叉树&#xff08;LeetCode&#xff09; 相似题目: 105.…

【矩阵的大小和方向的分解】

“大小”&#xff1a;在特征值分解和奇异值分解中&#xff0c;矩阵的“大小”通常由特征值或者奇异值表示&#xff0c;它们描述了矩阵在不同方向上拉伸或压缩的程度。“方向”&#xff1a;特征向量和奇异值分解中的方向矩阵 ( U ) 和 ( V ) 则描述了矩阵作用下空间中各个方向的…

【AIGC】如何充分利用ChatGPT:有效提示框架与基本规则

概述 在使用ChatGPT进行内容创作时&#xff0c;遵循结构化的提示框架和基本规则可以显著提升AI响应的质量。本文探讨了五种结构化的提示框架&#xff0c;并详细介绍了基本规则和进阶技巧&#xff0c;帮助您更有效地与ChatGPT互动。 基础规则 规则1&#xff1a;指令放在开头&…

高级信号完整性

高级信号完整性&#xff0c;2022年版&#xff0c;1473页&#xff0c;24h秒发 内容庞大&#xff0c;都是新的内容、架构 QS排名100内的美国高校课件 发货内容&#xff1a; 29个分章节PDF 1个汇总PDF&#xff0c;1473页 点击获取 课程首先对电磁学进行了回顾。随后&#xff0c;…

yelp数据集上识别潜在的热门商家

yelp数据集是研究B2C业态的一个很好的数据集&#xff0c;要识别潜在的热门商家是一个多维度的分析过程&#xff0c;涉及用户行为、商家特征和社区结构等多个因素。从yelp数据集里我们可以挖掘到下面信息有助于识别热门商家 用户评分和评论分析 评分均值: 商家的平均评分是反映其…

qt QDataStream详解

1. 概述 QDataStream是Qt框架中的一个核心类&#xff0c;主要用于处理二进制数据的序列化和反序列化。它提供了高效、跨平台的方式&#xff0c;将C数据结构转化为字节流&#xff0c;便于在网络传输、持久化存储等场景下使用。QDataStream可以处理包括整数、浮点数、布尔值、字…

使用Spring Validation实现数据校验详解

目录 前言1. Spring Validation概述2. 配置Spring Validation2.1 引入依赖2.2 启用全局校验 3. 使用注解进行参数校验3.1 基本校验注解3.2 使用Pattern进行正则校验3.3 综合示例 4. 在控制器层应用校验4.1 方法参数校验4.2 自定义错误处理 5. 高级应用&#xff1a;自定义校验注…

链表(C 语言)

目录 一、链表的概念1. 链表的结构2. 链表的分类3. 链表的优势 二、链表的实现1. 无头单项非循环链表的实现1.1 代码说明 2. 带头双向循环链表的实现2.1 代码说明 三、链表和顺序表的区别四、链表总结 一、链表的概念 链表是一种顺序表&#xff0c;它由一个一个的节点组成&…

写文件回前端进行下载,报错:原因:CORS 头缺少 ‘Access-Control-Allow-Origin‘)

后端写文件返回前端&#xff0c;出现该错误。 解决 设置允许跨域 response.setHeader("Access-Control-Allow-Origin", "*"); 代码 后端 public void exportTemplate(HttpServletResponse response) { ArrayList<ActiveGifts> activeGifts new…

关注AI技术的应用前景,抓住未来科技发展的机遇!

在当今这个快速发展的时代&#xff0c;人工智能&#xff08;AI&#xff09;技术正以惊人的速度改变着我们的生活和工作方式。无论是在医疗、金融、教育还是制造业&#xff0c;AI的应用都在不断扩展&#xff0c;带来前所未有的机遇和挑战。关注AI技术的应用前景&#xff0c;不仅…