Mybatis获取插入数据的主键时,返回值总是1
xml里的写法
第一种方式
<insert id="insertLogin" parameterType="com.test.demo.entity.Carowner" keyColumn="carownerId"
useGeneratedKeys="true" keyProperty="carownerId">
INSERT into
carowner(name,phone,avatarUrl)
VALUES
(#{name},#{phone},#{avatarUrl})
</insert>
第二种方式
<insert id="setRegister" parameterType="com.test.demo.entity.Carowner">
INSERT into
carowner(name,phone,avatarUrl)
VALUES
(#{name},#{phone},#{avatarUrl})
<selectKey resultType="int" order="AFTER" keyProperty="carownerId">
SELECT LAST_INSERT_ID()
</selectKey>
</insert>
直接.var获取的是执行数据也就是sql语句插入时影响的行数,在你设置主键回显之后,你的主键就会回显(注入)到你返回的实体类中,直接.var返回的是这个方法的返回数据,我们要拿到的是主键,也就是开启主键回显之后注入到Carowner实体类之中的主键
carowner.getCarownerId()
carOwnerDao.setRegister(carowner);
int carownerId = carowner.getCarownerId();
System.out.println(carownerId);
package com.test.demo.entity;
public class Carowner {
private int carownerId;//车主ID
private String name;//车主微信名称
private String phone;//车主联系电话
private String classes;//使用设备类别
private String encodingId;//设备编码(唯一)
private String avatarUrl;//车主微信头像HTTPS地址
public Carowner() {
}
public Carowner(int carownerId, String name, String phone, String classes, String encodingId, String avatarUrl) {
this.carownerId = carownerId;
this.name = name;
this.phone = phone;
this.classes = classes;
this.encodingId = encodingId;
this.avatarUrl = avatarUrl;
}
public int getCarownerId() {
return carownerId;
}
public void setCarownerId(int carownerId) {
this.carownerId = carownerId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getClasses() {
return classes;
}
public void setClasses(String classes) {
this.classes = classes;
}
public String getEncodingId() {
return encodingId;
}
public void setEncodingId(String encodingId) {
this.encodingId = encodingId;
}
public String getAvatarUrl() {
return avatarUrl;
}
public void setAvatarUrl(String avatarUrl) {
this.avatarUrl = avatarUrl;
}
}