如果发现Mybatis-plus SQLSERVER 关键词查询报错,@RequestBody接收不到JSON数据

又是倒霉的一天

实惨的开始

今天同事丢给我一个他系统的数据库,让我根据他的数据库另外写一个权限管理系统,因为是SQLSERVER 所以很多用Mysql没出的问题都给我出了一遍。
我使用的是Mybatis-plus
首先是他表内有名为User的表 这个在SQLSER里面是关键词,所以需要在User.java实体中 添加
@TableName(“[User]”)
其次他表内的字段例如:UserID,Password,UserName等类型,所以我前端跟后端字段大小写是一致的写,但是 @RequestBody User user 接收不到数据
经过查询发现 @RequestBody 遵循驼峰命名 也就是说 我的同事 把我坑的实惨 而我自己 也忘记了这一茬 毕竟每天都是删删改改的日子 谁能想自己还能有一天在写登录接口呢
当然 我也比较懒 不想改了 那就复制粘贴给每个实体的字段加上 @JsonProperty

public class User {
    @JsonProperty
    @TableId(value = "UserID")
    private String UserID;
    @JsonProperty
    @TableField("UserName")
    private String UserName;
    @JsonProperty
    @TableField("Password")
    private String Password;
    }

于是乎 问题解决 @RequestBody能够接收到数据了

因为他的数据库 导致我的项目要从头开始 我很费解 但是又无可奈何

### SpringBoot整合SpringMVC与MyBatis的最佳实践 #### 1. 创建SpringBoot项目并引入依赖 为了实现SpringBoot与SpringMVC以及MyBatis整合,首先需要创建一个SpringBoot项目,并在`pom.xml`文件中添加必要的依赖项。这些依赖通常包括SpringWeb模块、MyBatis-Spring-Boot-Starter以及其他数据库驱动程序。 ```xml <dependencies> <!-- Spring Web --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- MyBatis Starter --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.5.1</version> </dependency> <!-- MySQL Driver --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> </dependencies> ``` 上述代码片段展示了如何在Maven项目中配置所需的依赖[^4]。 --- #### 2. 配置数据源和MyBatis 在`application.yml`或`application.properties`文件中定义数据源连接参数以及MyBatis的相关设置: ```yaml spring: datasource: url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC username: root password: root driver-class-name: com.mysql.cj.jdbc.Driver mybatis-plus: mapper-locations: classpath:mapper/*.xml type-aliases-package: com.example.demo.entity ``` 此部分配置用于指定MySQL数据库的URL、用户名、密码等信息,同时设置了MyBatis映射器的位置和实体类包路径[^1]。 --- #### 3. 编写Mapper接口和XML文件 通过编写Mapper接口并与之对应的XML文件来定义SQL语句。例如,在`UserMapper.java`中声明方法签名,而在`mapper/UserMapper.xml`中提供具体的SQL实现。 ```java @Mapper public interface UserMapper extends BaseMapper<User> { } ``` 对于复杂的查询逻辑可以扩展自定义的方法名及其对应关系到XML文件中[^3]。 --- #### 4. 控制层设计 (Controller Layer) 利用SpringMVC特性开发RESTful风格API控制器。下面是一个简单的例子展示如何暴露HTTP请求处理函数给前端调用者访问资源列表或者新增记录等功能点之一即增删改查中的增加功能为例说明如下所示: ```java @RestController @RequestMapping("/users") public class UserController { @Autowired private UserService userService; @PostMapping("") public ResponseEntity<String> createUser(@RequestBody User user){ boolean success = userService.save(user); return success ? new ResponseEntity<>("Created", HttpStatus.CREATED) : new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR); } } ``` 以上代码实现了接收JSON格式的数据并通过POST方式提交至服务器端保存新用户的业务流程[^2]。 --- #### 常见问题及解决方案 - **Q:** 数据库无法正常连接? - A: 检查`application.yml`中的数据库配置是否正确;确认网络可达性和权限授予情况。 - **Q:** Mapper未被扫描识别怎么办? - A: 确保已标注`@MapperScan("package.path")`于启动类之上以便自动发现所有的持久化层组件实例对象们. - **Q:** 动态SQL执行失败是什么原因引起的呢 ? - A: 可能存在语法错误或者是占位符匹配不一致等问题,建议仔细核对每一条sql语句结构形式是否符合标准规范要求. ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值