Mybatis-plus 双主键的实现示例
一、首先引入依赖
在Maven工程下的pom.xml文件引入这两个依赖
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.0</version>
</dependency>
<dependency>
<groupId>com.github.jeffreyning</groupId>
<artifactId>mybatisplus-plus</artifactId>
<version>1.5.1-RELEASE</version>
</dependency>二、在启动类中添加@EnableMpp标签
package com.GradeSystem.app;
import com.github.jeffreyning.mybatisplus.conf.EnableMPP;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
// web工程的启动类 该类启动一个内置的tomcat服务器
@SpringBootApplication //启动web服务器的注解标签
@MapperScan("com.GradeSystem.app.dao")
@EnableMPP
public class SpringBootApp {
public static void main(String[] args) {
SpringApplication.run(SpringBootApp.class);//启动内置tomcat服务器
}
}
三、在实体类中添加@MppMultiId标签和@TableField
package com.GradeSystem.app.bean;
import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* 功能:
* 作者:jiaping
* 日期:2023/9/5 20:48
**/
@Data //注解标签在类的头部编写,生成get set 无参数一有参数和其它的方法
@AllArgsConstructor //会自动生成有参数构造函数
@NoArgsConstructor //会生成无参构造函数
public class Grade implements Serializable {
@MppMultiId
@TableField(value = "stuid")
private String stuid; // 学生学号
@MppMultiId
@TableField(value = "counum")
private String counum;//课程序号
private String classid;//行政班级
private Float ordinaryscore;//平时成绩
private Float labscore;//实验成绩
private Float finalscore;//期末成绩
private Float finalgrade;//总评成绩
private String gradepoint;//绩点
private String pass;//是否通过
private String stus;//状态
private String resitgrade;//补考成绩
@TableField(exist = false) //非数据库字段
private String stuname;//学生姓名
}
四、在控制器类中添加复合主键操作,批量更新
/**
* 功能:
* 作者:jiaping
* 日期:2023/9/5 20:54
**/
@Api(tags = "成绩表")
@RestController //具备请求和相应功能
@RequestMapping("/grade")
@CrossOrigin //跨域访问
public class GradeController {
@Autowired
private GradeService gradeService;
@PostMapping("/batchSave")
public CommonResult batchSave(@RequestBody List<Grade> product) {
// 进行批量保存操作,例如批量保存到数据库
return CommonResult.success(gradeService.saveOrUpdateBatchByMultiId(product));
}
}
五、Mapper或者Dao类继承@MppBaseMapper
@Repository //表示这是数据访问层标签,意思就是将数据存储到数据库中,是springboot他的语义化注解标签
public interface GradeDao extends MppBaseMapper<Grade> {
}
六、Service和ServiceImpl类继承IMppService和MppServiceImpl
public interface GradeService extends IMppService<Grade> {
}
@Service
public class GradeServiceImpl extends MppServiceImpl<GradeDao, Grade> implements GradeService {
@Autowired //用来实例化对象
private GradeDao gradeDao;
}
七、问题解决:

出现这种错误,大概率是第一步加入的依赖版本冲突导致,mybatisplus-plus的版本1.5.1不要和mybatis-plus-boot-starter的版本3.5.2一起使用,更换为3.4.0
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.0</version>
</dependency>
<dependency>
<groupId>com.github.jeffreyning</groupId>
<artifactId>mybatisplus-plus</artifactId>
<version>1.5.1-RELEASE</version>
</dependency>到此这篇关于Mybatis-plus 双主键的实现示例的文章就介绍到这了,更多相关Mybatis-plus 双主键内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
SpringCloud zookeeper作为注册中心使用介绍
ZooKeeper由雅虎研究院开发,是Google Chubby的开源实现,后来托管到Apache,于2010年11月正式成为Apache的顶级项目。ZooKeeper是一个经典的分布式数据一致性解决方案,致力于为分布式应用提供一个高性能、高可用,且具有严格顺序访问控制能力的分布式协调服务2022-11-11
Spring Boot AOP与事务、异常处理交互的问题小结
文章介绍了Spring Boot中AOP与事务、异常处理的交互,包括@Transactional注解的处理机制、事务与AOP的结合、切面执行顺序以及异常通知与事务的交互,通过示例和流程图,详细说明了在多切面环境下,通知的执行顺序及其实现原理,感兴趣的朋友跟随小编一起看看吧2025-12-12
SpringBoot集成LiteFlow工作流引擎的完整指南
LiteFlow作为一款国产轻量级规则引擎/流程引擎,以其零学习成本、高可扩展性和极致性能成为微服务架构下的理想选择,本文将详细讲解SpringBoot集成LiteFlow的全过程,助大家轻松驾驭轻量级流程编排2025-06-06
java.util.NoSuchElementException原因及两种解决方法
本文主要介绍了java.util.NoSuchElementException原因及两种解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2022-06-06
Java的Hibernate框架中的双向主键关联与双向外键关联
Hibernate想要实现双向的关联就必须在映射文件的两端同时配置<one-to-one>,另外还要在主映射的一端采用foreign外键关联属性,下面我们就一起来看一下Java的Hibernate框架中的双向主键关联与双向外键关联方法:2016-06-06
Java中的Unsafe在安全领域的使用总结和复现(实例详解)
unsafe里面有很多好用的方法,比如allocateInstance可以直接创建实例对象,defineAnonymousClass可以创建一个VM匿名类(VM Anonymous Class),以及直接从内存级别修改对象的值。这篇文章主要介绍了Java中的Unsafe在安全领域的一些应用总结和复现,需要的朋友可以参考下2022-03-03


最新评论