Mybatis-plus double primary key

1. First introduce dependencies

Introduce these two dependencies into the pom.xml file under the Maven project

        <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>

2. Add the @EnableMpp tag to the startup class

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服务器
    }
}

3. Add @MppMultiId tag and @TableField to the entity class

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;//学生姓名

}

4. Add composite primary key operations to the controller class and update them in batches


/**
 * 功能:
 * 作者: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));
    }


}

5. Mapper or Dao class inherits @MppBaseMapper

@Repository //表示这是数据访问层标签,意思就是将数据存储到数据库中,是springboot他的语义化注解标签
public interface GradeDao extends MppBaseMapper<Grade> {
   
}

6. Service and ServiceImpl classes inherit IMppService and MppServiceImpl

public interface GradeService extends IMppService<Grade> {
  
}
@Service
public class GradeServiceImpl extends MppServiceImpl<GradeDao, Grade> implements GradeService {
    @Autowired //用来实例化对象
    private GradeDao gradeDao;

   
}

7. Problem solving:

458c654eceea41278539e7e0b57c48a7.png

This error is most likely caused by a conflict in the dependency version added in the first step. Do not use version 1.5.1 of mybatisplus-plus with version 3.5.2 of mybatis-plus-boot-starter. Replace it with 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>

Guess you like

Origin blog.csdn.net/weixin_58170033/article/details/132721002