mybatisplus+pgsql查询bug的解决

 更新时间:2023年03月17日 09:59:47   作者:huarui0922  
本文主要介绍了mybatisplus+pgsql查询bug的解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

最近公司把底层数据库,改换成了pgsql,之前一直是用的mysql。可是换了pgsql之后,现在发现跟mybatisplus集成上,居然出现了一些很奇怪的bug。

这是sys_user表,我要根据id查这两条数据,一个id为3,一个id为5

这是4条查询语句,前2条根据id为3的查,后两条根据id为5的查

以下是根据id为3来查,

数据正常查了处理,departmentId也不为空,为啥这里我要提到 departmentId这段,请接着看,

奇怪的事情发生了,当id为5的查询时,数据也查出来了,确实是数据库里的那两条数据,但是

departmentId居然为null,这就很离谱

这是实体:

package com.xmirror.entity.entity.system;
 
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.xmirror.entity.base.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.SimpleGrantedAuthority;
import org.springframework.security.core.userdetails.UserDetails;
 
import java.beans.Transient;
import java.util.*;
 
/**
 * 用户实体
 *
 * @author Wang, Haoyue
 * @since 2020/9/11 2:04 下午
 */
@Data
@TableName("sys_user")
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
@JsonInclude(JsonInclude.Include.NON_NULL)
public class User extends BaseEntity implements UserDetails {
 
    /**
     * 用户名
     */
    private String username;
 
    /**
     * 密码
     */
    private String password;
 
    /**
     * 真实姓名
     */
    private String realName;
 
    /**
     * 手机号码
     */
    private String phone;
 
    /**
     * 邮箱
     */
    private String email;
 
    /**
     * 是否启用
     * 0: 不启用
     * 1: 启用
     */
    private Integer status;
 
    /**
     * 部门id
     */
    private Integer departmentId;
 
    /**
     * 授权开始时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date authStartTime;
 
    /**
     * 授权结束时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date authEndTime;
 
    /**
     * 登录失败次数
     */
    private Integer loginFailCount;
 
    /**
     * 角色id
     */
    @TableField(exist = false)
    private Integer roleId;
 
    /**
     * 角色名称
     */
    @TableField(exist = false)
    private String roleName;
 
    /**
     * 注册说明
     */
    private String remark;
 
    /**
     * 权限集合
     * 非数据库字段属性
     */
    @TableField(exist = false)
    private List<Permission> authorities;
 
    public User() {
    }
 
    public User(Integer id){
        super.setId(id);
    }
    public User(List<Permission> authorities, User user) {
        this.authorities = authorities;
        super.setId(user.getId());
        super.setModifyDate(user.getModifyDate());
        super.setCreateDate(user.getCreateDate());
        username = user.getUsername();
        password = user.getPassword();
        realName = user.getRealName();
        phone = user.getPhone();
        email = user.getEmail();
        status = user.getStatus();
        departmentId = user.getDepartmentId();
        authStartTime = user.getAuthStartTime();
        authEndTime = user.getAuthEndTime();
    }
 
    @Transient
    @Override
    public Collection<? extends GrantedAuthority> getAuthorities() {
        List<SimpleGrantedAuthority> auth = new ArrayList<>();
        // 根据Permission生成权限列表
        Optional.ofNullable(authorities)
                .ifPresent(p -> p.forEach(permission -> {
                    auth.add(new SimpleGrantedAuthority(permission.getExpression()));
                }));
        return auth;
    }
 
    @Transient
    @Override
    public boolean isAccountNonExpired() {
        return true;
    }
 
    @Transient
    @Override
    public boolean isAccountNonLocked() {
        return true;
    }
 
    @Transient
    @Override
    public boolean isCredentialsNonExpired() {
        return true;
    }
 
    @Transient
    @Override
    public boolean isEnabled() {
        return true;
    }
}

这是表结构

我把sql打印出来,拿来数据库里执行,都是能正常查出来的,说明单独跟pgsql没有关系,估计就是pgsql跟mybatisplus集成上的问题。而且也只有这一个字段出不来,并且也不是每条数据的这个字段出不来。

真是百思不得其解,都后悔用这pgsql这玩意儿了,不知道有朋友遇到过这种奇怪问题没有

到此这篇关于mybatisplus+pgsql查询bug的解决的文章就介绍到这了,更多相关mybatisplus pgsql查询bug内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java中定时器java.util.Timer的简单模拟

    Java中定时器java.util.Timer的简单模拟

    在Java中,定时器(Timer)是一个工具类,用于安排任务在指定时间后执行或以指定的时间间隔重复执行,本文就来讲讲如何简单模拟实现定时器吧
    2023-07-07
  • Spring注解@EnableWebMvc使用的坑点及解析

    Spring注解@EnableWebMvc使用的坑点及解析

    这篇文章主要介绍了Spring注解@EnableWebMvc使用的坑点及解析,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • mybatis中的字符串拼接问题

    mybatis中的字符串拼接问题

    这篇文章主要介绍了mybatis中的字符串拼接问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • SpringBoot之RabbitMQ的使用方法

    SpringBoot之RabbitMQ的使用方法

    这篇文章主要介绍了SpringBoot之RabbitMQ的使用方法,详细的介绍了2种模式,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-12-12
  • 解决SpringMVC使用@RequestBody注解报400错误的问题

    解决SpringMVC使用@RequestBody注解报400错误的问题

    这篇文章主要介绍了解决SpringMVC使用@RequestBody注解报400错误的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-09-09
  • Springboot Tomcat APR模式详解和实践记录

    Springboot Tomcat APR模式详解和实践记录

    这篇文章主要介绍了Springboot Tomcat APR模式详解和实践记录,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2025-04-04
  • IntelliJ IDEA中程序包org.slf4j找不到的解决

    IntelliJ IDEA中程序包org.slf4j找不到的解决

    这篇文章主要介绍了IntelliJ IDEA中程序包org.slf4j找不到的解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • 一文详解MySql外连接查询在SpringBoot中的具体使用

    一文详解MySql外连接查询在SpringBoot中的具体使用

    外连接通常分为左外连接,右外连接和全外连接,这篇文章主要为大家详细介绍了如何在SpringBoot中使用MySql的外连接查询,需要的可以参考下
    2025-02-02
  • Java杂谈之如何消除代码中一大串参数列表

    Java杂谈之如何消除代码中一大串参数列表

    参数列表和字面意思差不多,主要是表示该参数数量不是固定的,可能会有一个参数,可能多个,不管多少个参数,都放到一个数组处理,这种参数叫可变参数。可变长参数要放在最后一个参数位置处理,但是一个函数里面不能有俩种类型的可变参数
    2021-10-10
  • Spring的CorsFilter会失效的原因及解决方法

    Spring的CorsFilter会失效的原因及解决方法

    众所周知CorsFilter是Spring提供的跨域过滤器,我们可能会做以下的配置,基本上就是允许任何跨域请求,我利用Spring的CorsFilter做跨域操作但是出现报错,接下来小编就给大家介绍一Spring的CorsFilter会失效的原因及解决方法,需要的朋友可以参考下
    2023-09-09

最新评论