spring boot mybatis 中 selectByPrimaryKey

本人新手 ,对象类中,id字段为自增字段,添加了有参构造方法,参数中没有id这个字段,因为是自增的,但是如果不添加的话,mapper中selectByPrimaryKey (id),就会报错,意思大概是搜索的是ID 是number类型的字段,会映射到构造方法中的第一个参数,第一个参数是string类型的

selectByPrimaryKey 这个方法是根据id检索数据。你的idnull。那mysql怎么知道你你要检索什么??
id自增只跟insert 相关。跟检索没关系。

谢谢回复, 我构造函数中没有写id字段,是想着在create的时候可以直接new ClassName(字段1,字段2…)这样插入数据,但是如果构造函数中不写id参数的话,查询就会报错,前端访问,后台Controller中是可以接受到id这个参数的,但再往下就报错了

###sql
<select id="findById" parameterType="int" resultType="com.example.demo.entity.Emp">
        select * from emp where empno=#{value};
    </select>

####Controller

  @GetMapping("/emp/{id}")
    @ResponseBody
    public Emp findById(@PathVariable("id") Integer id){
        Emp emp = empService.findById(id);
        return emp;
    }
###Service#
   public Emp findById(Integer empno) {
        Emp emp = empMapper.findById(empno);
        return emp;
    }

##mapper 
public interface EmpMapper {
    public Emp findById(Integer empno);
}

###entity

import java.util.Date;

public class Emp {
    private Integer empno; //id
    private String empname;
    private Integer age;
    private Date hiredate;
    private Integer deptno;
    private String job;

    public Emp(String empname, Integer age, Date hiredate, Integer deptno, String job) {
        this.empname = empname;
        this.age = age;
        this.hiredate = hiredate;
        this.deptno = deptno;
        this.job = job;
    }

再给个空的构造函数。

可以了 ,感谢