记录mabatis-plus初体验

一、简介

org.apache.ibatis.binding.BindingException: Invalid bound statement (not found) 

测试问题现象:测试mabatis的crud方法

增加 批量删除都没有问题 单单就是这个根据ID删除有问题

解决方案:真的就是pom文件的问题 

自己的版本是IntelliJ IDEA 2022.3.3 (Ultimate Edition)

创建springboot使用的是阿里云的镜像源 http://start.aliyun.com

JDK1.8 

问题就是在项目初始化的时候 这个pom文件会加载很多目前不是很明白的一些依赖,虽然pom文件没有报错 但是会影响后面mybatis默认的crud的测试方法。索性全部删除自己一点一点加依赖文件,参考文章

Mybatis-Plus学习总结(超详细整理) - 知乎

快速开始官网地址:

快速开始 | MyBatis-Plus

二、搭建过程

pom

这里感觉最重要的两个依赖就是mysql和mabatis-plus的依赖,这块不是很熟悉,还要学习下。

<?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><groupId>com.wang</groupId><artifactId>DemoMybatis</artifactId><version>0.0.1-SNAPSHOT</version><name>DemoMybatis</name><description>DemoMybatis</description><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.3.4.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version></properties><dependencies><!--mybatis-plus 是自己开发的,非官方的!--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.3.1.tmp</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope><exclusions><exclusion><groupId>org.junit.vintage</groupId><artifactId>junit-vintage-engine</artifactId></exclusion></exclusions></dependency><!--fastjson 是阿里巴巴开源的JSON解析器,性能优于 Gson、Jackson 等--><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.62</version></dependency><!--digest 是一个密码加密工具,可以生成MD5、SHA1、SHA256、SHA512等加密--><dependency><groupId>commons-codec</groupId><artifactId>commons-codec</artifactId><version>1.15</version></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>
</project>q

 启动类

启动类这里必须加的一个mapperscan注解是为了让springboot扫描到mapper文件,非常重要,必须加!

package com.wang;import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@MapperScan(basePackages = "com.wang.mapper")
@SpringBootApplication
public class DemoMybatisApplication {public static void main(String[] args) {SpringApplication.run(DemoMybatisApplication.class, args);}}

yml文件

yml文件这里的细节处理就是

map-underscore-to-camel-case: false

#默认情况下mabatis-plus会对字段名进行驼峰命名法和下划线之间的转换。如果你的数据库字段名是驼峰命名法而不是下划线命名法 这里设置false,如果不明白可以根据日志打印,这里调试true,false测试一下就明白了。需要注意的是 #map-underscore-to-camel-case 配置放在 mybatis-plus.configuration 下,而不是在 mybatis-plus 的根级别。

server:port: 8090
spring:datasource:url: jdbc:mysql://localhost:3307/JWT?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=trueusername: rootpassword: rootdriver-class-name: com.mysql.cj.jdbc.Driver
#    type: com.alibaba.druid.pool.DruidDataSourcemybatis-plus:global-config:db-config:logic-delete-field: deletedlogic-delete-value: 1logic-not-delete-value: 0configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImplmap-underscore-to-camel-case: false#默认情况下会对字段名进行驼峰命名法和下划线之间的转换。如果你的数据库字段名是驼峰命名法而不是下划线命名法#map-underscore-to-camel-case 配置放在 mybatis-plus.configuration 下,而不是在 mybatis-plus 的根级别。mapper-locations: classpath:/mapper/*.xmltype-aliases-package: com.wang.demo_mybatis.entity

实体类

package com.wang.entity;import com.baomidou.mybatisplus.annotation.*;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;import java.io.Serializable;/*** @Author wang* @Date 2024/5/29 16:25* @PackageName:com.wang.demo2_token.entity* @ClassName: ProductDetails* @Description: TODO 商品明细   这里测试的是mybatis-plus的注解,和mybatis的xml配置方式 默认的CRUD操作* @Version 1.0*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@TableName("productdetails")
public class ProductDetails implements Serializable {/***     ProductID INT AUTO_INCREMENT PRIMARY KEY COMMENT '商品ID,主键,自增',         -- 商品ID,主键,自增*     ProductName VARCHAR(255) NOT NULL COMMENT '商品名称',                        -- 商品名称*     Description TEXT COMMENT '商品描述',                                         -- 商品描述*     Price DECIMAL(10, 2) NOT NULL COMMENT '商品价格',                            -- 商品价格,十进制数,精度为10,标度为2*     StockQuantity INT NOT NULL COMMENT '库存数量',                               -- 库存数量*     CreatedAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',            -- 创建时间,默认值为当前时间戳*     UpdatedAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', -- 更新时间,默认值为当前时间戳,在记录更新时自动更新*     IsDeleted int DEFAULT 0 COMMENT '逻辑删除字段'*/@TableId(type = IdType.AUTO)private Long ProductID;private String productName;private String description;private double price;private int stockQuantity;//创建时间,插入数据时操作@TableField(fill = FieldFill.INSERT)private String createdAt;//更新时间,插入和更新是操作@TableField(fill = FieldFill.INSERT_UPDATE)private String updatedAt;@TableLogicprivate int isDeleted;}

 

mapper

extends BaseMapper<泛型>

 

@Mapper
public interface ProductDetailsMapper extends BaseMapper<ProductDetails> {

 mapper.xml

快捷键创建

测试类

快捷键创建测试类

 

 

@Slf4j
@SpringBootTest
class ProductDetailsMapperTest {
@Autowired
private ProductDetailsMapper productDetailsMapper;
    //测试删除商品详情@Testpublic void testDelete() {productDetailsMapper.deleteById(9);
//        productDetailsMapper.delete(null);System.out.println("删除成功");}

 三、总结

遇到问题,一开始可以根据分析控制台日志,观察输出信息,甚至是观察数据,一点一点攻克。

如果事与愿违,重新new一个项目,忘掉所有的知识,经验,习惯,像刚接触这个知识一样,一步一步搭建一步一步测试,这样就能印象深刻这个问题为什么会发生了。

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

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

相关文章

Fully Convolutional Networks for Semantic Segmentation--论文笔记

论文笔记 资料 1.代码地址 2.论文地址 https://arxiv.org/abs/1411.4038 3.数据集地址 论文摘要的翻译 卷积网络是强大的视觉模型&#xff0c;可以产生特征层次结构。我们表明&#xff0c;卷积网络本身&#xff0c;经过端到端&#xff0c;像素对像素的训练&#xff0c;在…

【新能源大巴BMS结构与乘用车的区别】

新能源大巴BMS结构与乘用车的区别 这篇文章主要介绍新能源大巴的电池和BMS的结构与乘用车的区别。 主要有&#xff0c;新能源大巴行业、新能源电池系统结构和新能源大巴的BMS系统。 第一部分 新能源大巴行业 其实数数全球的商用车(大巴卡车)&#xff0c;大致的方向还是沿着就…

前端传String字符串 后端使用enun枚举类出现错误

情况 前端 String 后端 enum 前端 后端 报错 2024-05-31T21:47:40.61808:00 WARN 21360 --- [nio-8080-exec-6] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.web.method.annotation.MethodArgumentTypeMismatchException: Failed to con…

香港服务器无法访问是什么情况?

香港服务器无法访问是什么情况?简单来说&#xff0c;这意味着香港服务器没有响应请求&#xff0c;客户端无法访问。此错误可能由于多种原因而发生&#xff0c;包括网络连接问题、服务器停机、防火墙限制和 DNS 错误。当发生服务器无法访问错误时&#xff0c;它会影响您网站的性…

Qt for android : libusb在android中使用

简介 如何在Qt for Android中使用libusb&#xff0c; 其实libusb的文档里面都写的很清楚&#xff0c; 这里只是稍微做下整理。 libusb libusb github源码 libusb release的版本, 有编译好的静态 步骤 1. 下载libusb libusb v1.0.027 源码包 2. 整理提取libusb android使用源…

Docker 私有仓库部署和管理

目录 一、案例一 概述 二、案例一 前置知识点 2.1、什么是 Docker Compose 2.2、什么是 Consul 三、案例一 使用 docker Compose 搭建 Consul 集群环境 3.1、案例实验环境 3.2、案例需求 四、案例实施 4.1、Docker 网络通信 1&#xff09;端口映射 2&#xf…

运筹学_3.运输问题(特殊的线性规划)

目录 前言3.1 平衡运输问题中初始基可行解确定运输问题平衡运输与非平衡运输平衡运输问题的数学模型单纯形法解决平衡运输问题&#xff0c;初始可行基的确认 3.2 平衡运输问题的最优解判别求检验数表上作业法 3.3 产销不平衡的运输问题运输问题中产大于销的问题运输问题中产小于…

【MySQL访问】

文章目录 一、C远程连接到MySQLmysql_init()函数mysql_real_connect&#xff08;&#xff09;函数实战案例 二、处理查询select的细节mysql_store_result()函数获取结果行和列获取select结果获取行内容获取列属性 三、MySQL图形化界面连接 关于动态链接&#xff0c;请看这篇文章…

达梦数据库(五) -------- 达梦数据库+mybatisPlus+springboot

前言&#xff1a;安装完达梦数据库后&#xff0c;需要初始化实例&#xff0c;在初始化实例时&#xff0c;需要注意大小写敏感的设置。大小写敏感只能在初始化数据库的时候设置&#xff0c;默认为大小写敏感&#xff0c;一旦设置成功就无法修改&#xff0c;如果想要修改&#xf…

elementui el-tooltip文字提示组件弹出层内容格式换行处理

1、第一种 1.1 效果图 1.2、代码 <template><div class"wrapper"><el-tooltip class"content" effect"dark" placement"top"><div slot"content"><div v-html"getTextBrStr(text)"&…

ai虚拟主播自动切换的实现

前段时间,看到b站突然冒出很多ai主播,输入数字切换小姐姐.感觉挺有趣.思考了以下决定手动实现一下. 然后就陷入长达5天的踩坑中 由于是自建的webrtc服务器,很自然的想直接收流转发,这也是最优的方案, 然而实际上遇到许多不是很友好的bug, 然后再想使用rtp转发,依然不理想. 最后…

【第十二节】C++控制台版本贪吃蛇小游戏

目录 一、游戏简介 1.1 游戏概述 1.2 实现功能 1.3 开发环境 二、实现设计 2.1 C类的设计 2.2 项目结构 2.3 代码设计 三、程序运行截图 3.1 游戏界面 3.2 自定义地图 3.3 常规游戏界面 一、游戏简介 1.1 游戏概述 本游戏是一款基于C语言开发的控制台版本贪吃蛇游…

Python中的魔法函数

大家好&#xff0c;Python作为一种高级编程语言&#xff0c;以其简洁、优雅和易读性而闻名。然而&#xff0c;Python的强大之处不仅仅在于其语法的简洁性&#xff0c;还在于其灵活的面向对象编程范式。在Python中&#xff0c;有一类特殊的方法被称为“魔法函数”&#xff0c;它…

神器!!Python热重载调试【送源码】

在 Python 开发的路上&#xff0c;调试是我们不可避免的一环。 而今天推荐的开源项目Reloadium &#xff0c;让你在不重启程序的情况下实现代码的即时更新和调试。 &#x1f504; Reloadium 功能亮点&#xff1a; 1. 热重载魔法&#xff1a; Reloadium 不仅仅能够实现代码的…

电脑缺失msvcp120.dll要如何解决,学会这七个方法,轻松摆脱困扰

msvcp120.dll 是 Microsoft Visual C 2013 运行时库的一部分&#xff0c;它提供了 C 标准库的实现&#xff0c;使得开发者能够利用丰富的 C 功能来构建复杂的应用程序。这个文件对于使用了 C 标准库的应用程序来说是必不可少的。当这些应用程序运行时&#xff0c;它们会动态链接…

Docker管理工具Portainer忘记admin登录密码

停止Portainer容器 docker stop portainer找到portainer容器挂载信息 docker inspect portainer找到目录挂载信息 重置密码 docker run --rm -v /var/lib/docker/volumes/portainer_data/_data:/data portainer/helper-reset-password生成新的admin密码&#xff0c;使用新密…

Ubuntu安装GCC编译器

GCC编译器安装 GCC编译器安装切换软件源(换成国内的服务器)1 、创建一个文本文档并命名为“sources.list”2 、复制软件源列表清华源:阿里源:3 、把修改之后的.list 文件覆盖原有的文件4 、更新软件列表5 、安装6 、检查是否安装成功7、GCC 编译器:GCC编译器安装 这里演示…

cdo | 常用命令

整理一下平时经常会使用的cdo命令 如何来更改netcdf数据中的变量名呢&#xff1f; 假设我现在有一个sst月平均数据,希望将里面的变量名称sst修改为sst_new netcdf oisst_monthly { dimensions:lat 180 ;lon 360 ;time UNLIMITED ; // (476 currently)nbnds 2 ; variable…

【PTA】7-4 朋友圈(C++ * 并查集思想)代码实现 一点反思

题目如下&#xff1a; AC代码如下&#xff08;参考PTA 7-2 朋友圈&#xff08;25 分&#xff09;_处理微信消息pta-CSDN博客&#xff09; #include<bits/stdc.h> using namespace std; #define sz 30005 typedef struct node{int rk, fa; }Node; Node tree[sz]; void In…

STL:copy简介

STL:copy STL算法&#xff1a;copy std::copy()函数使用 std::copy 函数在 中声明&#xff0c;属于变易算法(Modifying sequence operations)&#xff0c;主要用于实现序列数据的复制 template <class InputIterator, class OutputIterator>OutputIterator copy (InputI…