首先有两个方法实现
1、使用useGeneratedKeys与KeyProperty(数据库主键一定要是自增的,不然会出错)
2.、使用SelectKey标签
它们两个的区别在于不是所有的数据库都支持主键增长(例如oracle就不支持),如果遇到不支持的就不能使用第一个方法,而需要使用第二个方法。
第一个方法的实现
Model层的代码
package cn.rhl.model;
import java.io.Serializable;
public class BusinessBean implements Serializable {
private int id;
private String addr;
private String money;
public String getMoney() {
return money;
}
public void setMoney(String money) {
this.money = money;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getAddr() {
return addr;
}
public void setAddr(String addr) {
this.addr = addr;
}
}
Controller层的代码
public String testInsert() {
BusinessBean businessBean = new BusinessBean();
businessBean.setAddr("唐山");
businessBean.setMoney("12");
selectDateService.insertDate(businessBean);
System.out.println(businessBean.getId());
return "success";
}
Service层的代码
public interface SelectDateService {
void insertDate(BusinessBean businessBean);
}
Service层实现类
@Service
public class SelectDateServiceImpl implements SelectDateService {
@Autowired
private SelectDateMapper selectDateMapper;
@Override
public void insertDate(BusinessBean businessBean) {
selectDateMapper.insertDate(businessBean);
}
}
Mapper层的代码
void insertDate(BusinessBean businessBean);
mapper.xml中的写法。
#parameterType 一定要指定,不然获取到的主键值不知道映射到那个具体的实体类中去。
#useGeneratedKeys 使用主键自动增长
#keyProperty 将获取的主键值映射到实体类中的那个字段上
<insert id="insertDate" parameterType="cn.rhl.model.BusinessBean" useGeneratedKeys="true" keyProperty="id">
insert into business (money,addr) values (#{money},#{addr})
</insert>
这其中要注意两个问题,一个是mapper.xml的parameterType一定要指定,另外一个是保证数据库是支持主键值自增的。
第二个方法的实现,相对来说比较麻烦,但是对数据库不挑剔
<insert id="insertDate" parameterType="cn.rhl.model.BusinessBean">
<!--selectKey 会将 SELECT LAST_INSERT_ID()的结果放入到传入的BusinessBean的实体类中,
keyProperty 放到实体类的那个属性中
order AFTER 表示 SELECT LAST_INSERT_ID() 在insert执行之后执行,
BEFORE 表示 SELECT LAST_INSERT_ID() 在insert执行之前执行,
resultType 主键类型 -->
<selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer">
SELECT LAST_INSERT_ID()
</selectKey>
insert into business (money,addr) values (#{money},#{addr})
</insert>
最后祝大家身体健康,万事胜意。