首页 > 其他分享 >Springboot在编写CRUD时,访问对应数据函数返回null

Springboot在编写CRUD时,访问对应数据函数返回null

时间:2024-02-05 21:00:15浏览次数:23  
标签:map Springboot CRUD bot private Integer null id String

1. 我遇到了什么问题

我在学习springboot,其中在编写CRUD时发现访问数据的函数执行下去返回值是null但是其它部分正常。
下面是我的错误代码

pojo

public class Bot {
    @TableId(type = IdType.AUTO )
    private Integer id ;
    private  Integer user_id ;
    private String name ;
    private String description ;
    private String content ;
    private Integer rating ;
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date create_time ;
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date modify_time ;
}

数据库列名

其中注意我是在面临访问user_id这个类时出现了返回null。当时目的是为了pojo和数据库对应。

Service

@Service
public class RemoveServiceImpl implements RemoveService {
    @Autowired
    BotMapper botMapper ;

    @Override
    public Map<String, String> remove(Map<String, String> data) {
        UsernamePasswordAuthenticationToken authenticationToken =
                (UsernamePasswordAuthenticationToken) SecurityContextHolder.getContext().getAuthentication() ;
        UserDetailsImpl loginUser = (UserDetailsImpl) authenticationToken.getPrincipal() ;
        User user = loginUser.getUser() ;

        Map<String,String> map = new HashMap<>();
        int bot_id = Integer.parseInt(data.get("bot_id")) ;
        Bot bot = botMapper.selectById(bot_id) ;
        if(bot == null) {
            map.put("error_message", "Bot不存在") ;
            return map ;
        }
        System.out.println("new BOT_ID" + bot.getId());
        System.out.println(bot.getName());
        System.out.println(bot.getUser_id());
        System.out.println(user.getId());

        if(!bot.getUser_id().equals(user.getId())) {
            map.put("error_message", "你没有权限") ;
            return map ;
        }

        botMapper.deleteById(bot_id) ;

        map.put("error_message", "success") ;
        return map ;
    }
}

其中各类访问数据库的函数都是idea自动填充的
问题就是当我程序进行到这个页面时,bot.getUser_id()返回值是null其它值都是正确的

后面发现pojo层的命名和数据库之间要使用驼峰命名法进行对应,关于驼峰命名法希望大家自己去查一查,因为我也不熟。但是对于数据库中的user_id列命名需要把_变为大写。
将pojo层变为

public class Bot {
    @TableId(type = IdType.AUTO )
    private Integer id ;
    private Integer userId ;
    private String name ;
    private String description ;
    private String content ;
    private Integer rating ;
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date create_time ;
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date modify_time ;
}

同时把service中的

bot.getUser_id()

改为

bot.getUserId()

问题就解决了
我是看这位大佬的提醒懂得

标签:map,Springboot,CRUD,bot,private,Integer,null,id,String
From: https://www.cnblogs.com/oldmomsimith/p/18008810

相关文章

  • Springboot整合redis配置详解
    Springboot整合redis配置详解1.导入依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId></dependency>2.编写properties或者yml配置#Redis本地服务器地址,注意要开启redis服务,即那个redis-s......
  • SpringBoot可以同时处理多少请求?
    正文我们都知道,SpringBoot默认的内嵌容器是Tomcat,也就是我们的程序实际上是运行在Tomcat里的。所以与其说SpringBoot可以处理多少请求,到不如说Tomcat可以处理多少请求。关于Tomcat的默认配置,都在spring-configuration-metadata.json文件中,对应的配置类则是org.springframework.b......
  • spring-boot-maven-plugin maven-compiler-plugin springboot demo
     <build><finalName>${project.artifactId}</finalName><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-......
  • springboot之ImportBeanDefinitionRegistrar动态注入
    SpringBoot中的使用在SpringBoot内置容器的相关自动配置中有一个ServletWebServerFactoryAutoConfiguration类。该类的部分代码如下:@Configuration(proxyBeanMethods=false)@AutoConfigureOrder(Ordered.HIGHEST_PRECEDENCE)@ConditionalOnClass(ServletRequest.class)@Con......
  • SpringBoot- 文件上传
    packagecom.example.demo.controller;importorg.springframework.web.bind.annotation.PostMapping;importorg.springframework.web.bind.annotation.RestController;importorg.springframework.web.multipart.MultipartFile;importjavax.servlet.http.HttpServlet......
  • SpringBoot中使用Spring自带线程池ThreadPoolTaskExecutor与Java8CompletableFuture实
    场景关于线程池的使用:Java中ExecutorService线程池的使用(Runnable和Callable多线程实现):https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/126242904Java中创建线程的方式以及线程池创建的方式、推荐使用ThreadPoolExecutor以及示例:https://blog.csdn.net/BADAO_......
  • 阿里二面:SpringBoot可以同时处理多少个请求?当场懵了。。。。
    SpringBoot以其简洁高效的开发方式和强大的内嵌容器特性,为开发者提供了构建高性能后端服务的便利。然而,当面临高并发场景时,理解并合理配置SpringBoot应用以达到最佳的并发处理能力至关重要。在SpringBoot中,应用程序对HTTP请求的并发处理主要依赖于内嵌的Servlet容器(如Tomcat)。接......
  • SpringBoot实现统一异常处理
    目录前言实现步骤定义统一响应对象类定义业务异常枚举接口和实现定义业务异常基类定义全局异常处理切面测试和验证总结前言近日心血来潮想做一个开源项目,目标是做一款可以适配多端、功能完备的模板工程,包含后台管理系统和前台系统,开发者基于此项目进行裁剪和扩展来完成自己的功......
  • 全网最全:SpringBoot 各种回滚骚操作实战
    事务定义事务,就是一组操作数据库的动作集合。事务是现代数据库理论中的核心概念之一。如果一组处理步骤或者全部发生或者一步也不执行,我们称该组处理步骤为一个事务。当所有的步骤像一个操作一样被完整地执行,我们称该事务被提交。由于其中的一部分或多步执行失败,导致没有步骤被提交......
  • 非空处理 Java非空判断 非空处理及mysql数据库字段的not null
    1.mysql##去掉非空,如果非空又没有默认值,这样程序在添加数据的时候i,如果没有设置值就会报错。该操作很危险。##ALTERTABLE`order_test`ADDCOLUMN`test_card_name`NOTNULLVARCHAR(200)COMMENT'卡名称';##修改允许为空..ALTERTABLE`order_test`MODIFYCOLUMN`test......