您的位置:首页 > 运维架构

mybatis 添加一条新数据并返回此数据的ID(主键)

2015-12-18 10:21 656 查看
通常数据库中表的主键是‘自动递增(mysql)’或’序列(oracle)‘,但插入数据后又要取得些条数据的ID(将ID做为主键)

利用Mybatis 的 selectKey来获得:

<!-- 添加部门 返回部门ID -->
<insert id="addDept" parameterType="com.demo.model.Department" keyProperty="id">
<selectKey keyProperty='id' resultType='int' order='AFTER'  >
select LAST_INSERT_ID();
</selectKey>
insert into department(<include refid="departmentAllField"/>)
values(#{departmentId},#{departmentName},#{departmentManagerName},#{companyId});
</insert>



<insert id="addDept" parameterType="com.demo.model.Department" useGeneratedKeys="true" keyProperty="id">
  insert into department(<include refid="departmentAllField"/>) 
   values(#{departmentId},#{departmentName},#{departmentManagerName},#{companyId});
</insert><span style="font-family: Arial, Helvetica, sans-serif;"></span>
注意:insert 标签中的 keyProperty  和  selectKey标签块中的 LAET_INSERT_ID() ,另外 order属性 对于 oracl为 BEFORE; mysql为AFTER

实体类:

public class Department {
private int id;
private int departmentId;
private String departmentName;
private String departmentManagerName;
private int companyId;
private List<Employee> employees;
//...GET SET ...
}


测试:

@Test
public void testDao(){
deptDao = session.getMapper(DepartmentDao.class);

Department department = new Department();
department.setDepartmentName("ares");
department.setDepartmentManagerName("tom");
department.setDepartmentId(32);
department.setCompanyId(6201);

deptDao.addDept(department);
System.out.println("新部门ID:"+department.getId());
}


输出成功!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息