场景:使用com.baomidou.mybatis-plus进行批量新增或更新操作时,发现后台日志只根据一个主键进行更新,实体类将两个主键都加上@TableId时,运行报错。

解决:引入了com.github.jeffreyning.mybatisplus,下面贴出解决代码

实体类(主要是将@TableId都改为@TableFiled,并将主键字段加上@MppMultiId注解)

package com.bdsoft.dc.view.entity;import com.baomidou.mybatisplus.annotation.TableName;import java.math.BigDecimal;import com.baomidou.mybatisplus.annotation.TableId;import java.time.LocalDateTime;import com.baomidou.mybatisplus.annotation.TableField;import java.io.Serializable;import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;import javax.persistence.EmbeddedId;/*** <p>* 视图头设定表* </p>** @author wangshuai1* @since 2022-03-03*/
@TableName("dc_view_header_user")
@ApiModel(value = "DcViewHeaderUser对象", description = "用户视图头设定表")
public class DcViewHeaderUser implements Serializable{private static final long serialVersionUID = 1L;@ApiModelProperty(value = "主键id")@MppMultiId@TableField("RECORDID")private String recordid;@ApiModelProperty(value = "用户id")@MppMultiId@TableField("USER_ID")private String userId;
}

Mapper(改为继承MppBaseMapper)

package com.bdsoft.dc.view.dao;import com.bdsoft.dc.view.entity.DcViewHeaderUser;
import com.github.jeffreyning.mybatisplus.base.MppBaseMapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;import java.util.Set;/*** <p>* 视图头设定表     Mapper 接口* </p>** @author wangshuai1* @since 2022-03-03*/
@Repository
public interface DcViewHeaderUserMapper extends MppBaseMapper<DcViewHeaderUser> {}

Service(继承IMppService)

package com.bdsoft.dc.view.service.view;import com.bdsoft.dc.view.entity.DcViewHeaderUser;
import com.baomidou.mybatisplus.extension.service.IService;
import com.github.jeffreyning.mybatisplus.service.IMppService;/*** <p>* 视图头设定表     服务类* </p>** @author wangshuai1* @since 2022-03-03*/
public interface DcViewHeaderUserService extends IMppService<DcViewHeaderUser> {/**
}

实现类(继承MppServiceImpl)

package com.bdsoft.dc.view.service.impl.view;import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.bdsoft.cache.service.UserSessionService;import com.bdsoft.dc.view.dao.DcHeaderViewMapper;
import com.bdsoft.dc.view.entity.DcHeaderView;
import com.bdsoft.dc.view.entity.DcViewHeaderUser;
import com.bdsoft.dc.view.dao.DcViewHeaderUserMapper;
import com.bdsoft.dc.view.service.view.DcHeaderViewService;
import com.bdsoft.dc.view.service.view.DcViewHeaderUserService;
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;import javax.servlet.http.HttpServletRequest;
import java.time.LocalDateTime;
import java.util.*;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.stream.Collectors;/*** <p>* 视图头设定表    服务实现类* </p>** @author wangshuai1* @since 2022-03-03*/
@Service
public class DcViewHeaderUserServiceImpl extends MppServiceImpl<DcViewHeaderUserMapper, DcViewHeaderUser> implements DcViewHeaderUserService {}

最后,记得项目的运行类需要加上@EnableMPP,开启MPP

@SpringBootApplication
//开启事务
@EnableTransactionManagement
//开启定时器
@EnableScheduling
@ServletComponentScan
@MapperScan(value = {"com.bdsoft.**.dao"}, nameGenerator = SpringBeanNameGenerator.class)
//扫描包com.bdsoft下bean,自定义BeanName生成策略, 解决不同包下同名类问题
@ComponentScan(basePackages = {"com.bdsoft"}, nameGenerator = SpringBeanNameGenerator.class)
@EnableAsync   //开启异步注解功能
//支持MPP
@EnableMPP
public class BDPWebApplication extends SpringBootServletInitializer {}

解决Mybatis-Plus的联合主键问题相关推荐

  1. MyBatis联合主键结果集与SQL查询结果不一致的问题

    2019独角兽企业重金招聘Python工程师标准>>> 一.问题 如果select中的联合主键组合成的key不唯一(当只select部分联合主键时可能发生),那么就会把相同的key合 ...

  2. mybatis-plus/mybatis的组件们——拦截器、字段填充器、类型处理器、表名替换、SqlInjector(联合主键处理)

    最近有个练手的小例子,大概就是配置两个数据源,从一个数据源读取数据写到另一个数据源,虽然最后做了出来,但是不支持事务...就当是对mybatis-plus/mybatis组件使用方式的记录吧,本次例子 ...

  3. mysql 联合主键_Mysql 创建联合主键

    Mysql 创建联合主键 2008年01月11日 星期五 下午 5:21 使用primary key (fieldlist) 比如: create table mytable ( aa int, bb ...

  4. 2019-7-27 [MySQL] DQL 简单查询[别名/去重/运算] 条件查询 排序查询 聚合查询 分组查询 导出与导入 多表操作[一对多/多对多][创外键 创联合主键 约束 添加 删除 测试]

    文章目录 5 SQL语句(DQL) 5.1DQL准备工作和语法 5.1.1准备工作 5.1.2 DQL语法: 5.2 简单查询 5.2.1 查询所有的商品 5.2.2 查询商品名和商品价格. 5.2. ...

  5. mysql 尽量不要使用 联合主键_MySQL 使用规范

    MySQL 使用规范 以下规范适用在线交易(OLTP)系统的数据库.数据仓库与分析系统也可以参考. 命名规范 表名.字段名.索引名使用小写字母.数字,采用下划线分割 表名采用模块名3个缩小字符_前缀, ...

  6. 关系型数据库中联合主键和唯一索引的应用

    一.前言 在项目开发中往往会遇到两个实体对象之间存在多对多关系的情况,此时我们会维护两个实体对象表,一个关系表,用来存放两者之间的关系.比较典型的案例是学生表.课程表.学生课程关系表.在这种关系表中, ...

  7. MySql基础篇---003 SQL之DDL、DML、DCL使用篇:创建和管理表 ,数据处理之增删改,MySQL数据类型精讲 ,约束:联合主键

    第10章_创建和管理表 讲师:尚硅谷-宋红康(江湖人称:康师傅) 官网:http://www.atguigu.com 1. 基础知识 1.1 一条数据存储的过程 存储数据是处理数据的第一步.只有正确地 ...

  8. oracle联合主键去重,联合主键的查询语句怎么写

    1.联合主键,SQL语句怎么写 建立主键有两种方法:一种是在数据库提供的GUI环境中建立,另一种是通过SQL语句执行建立,下面分别介绍. 1.在数据库提供的GUI环境中建立(以SQL7为例). 输入表 ...

  9. oracle主键约束删除,oracle删除主键查看主键约束及创建联合主键

    oracle删除主键查看主键约束及创建联合主键 1,主键的删除 ALTER TABLE TABLENAME DROP PRIMARY_KEY 执行上面的SQL可以删除主键:如果不成功可以用 ALTER ...

  10. MyBatis 3 自动生成 主键 针对不同的数据库(oracle/sqlserver/mysql)

    MyBatis自动生成的主键很多数据库支持自动生成主键的数据类型.不过这通常(并不总是)是个私有的特性.SQL Map 通过<insert>的子元素<selectKey>来支持 ...

最新文章

  1. mysql存储过程导出_Mysql导出存储过程
  2. C语言通路寻找,用C语言解决迷宫问题设计与寻找通路问题.pdf
  3. 是什么给了150万开发者拥抱深度学习的底气?
  4. md加密 16位 32位
  5. 2015.05.15,外语,学习笔记-《Word Power Made Easy》 01 “如何讨论人格特点”
  6. linux下nginx启动停止重启控制脚本
  7. 查看python内部模块命令,内置函数,查看python已经安装的模块命令
  8. 【C语言进阶深度学习记录】一 数据类型的本质与变量的本质
  9. 你的实力就等于别人对待你的态度
  10. 亚洲诚信亮相2018天翼智能生态博览会
  11. mysql view 能和表关联吗_MySQL数分:复杂查询
  12. oracle完全删除表空间
  13. InDesign 2022 for mac排版布局和页面设计
  14. yum快速安装mysql
  15. java开发常用的linux命令,Java开发中最常用的Linux命令整理
  16. xshell 与 xftp 免费版使用
  17. Ubuntu VirtualBox 安装问题解决
  18. 屠杀熊猫烧香方法记录
  19. Java PDF数字签名(五)—Java 给PDF签名时添加可信时间戳
  20. Spring Boot多模块项目打包

热门文章

  1. 输出长方体的体积和表面积
  2. golang: 使用 sort 来排序
  3. 泰隆银行it一面记录
  4. lopatkin俄大神精简中文系统Windows 10 Enterprise 2016 LTSB 14393.693 x86-PIP_x64-PIPvm ZH-CN
  5. python升级pip的命令
  6. dell pcserver修改idrac密码
  7. Linux高级C-结构体
  8. 软件赋能智造——第五届“设计+运维”国产工业软件研讨会圆满召开
  9. 博图SCL编程实例(一):SimMultizone
  10. 分布式事务框架Seata及EasyTransaction架构的比对思考