@PostConstruct
public void init() {
// 判断表中的数据是否为空,如果为空,说明根节点不存在,初始化根节点
List<Department> departmentList = departmentDao.findAll();
if (CollectionUtils.isEmpty(departmentList)) {
// 添加系统内置部门
Department rootDept = new Department(BUILT_IN_ROOT_DEPARTMENT_NAME, BUILT_IN_ROOT_DEPARTMENT_PARENT_ID);
departmentDao.insertDepartment(rootDept);
// null
System.out.println(rootDept.getId());
}
}
向数据库中插入一条数据后,获取数据的主键发现为null,明明设置了 useGeneratedKeys=“true” keyProperty=“id”,但是获取数据的主键仍为null
对应的dao层:
/**
* 新增部门
*
* @param department 部门
*/
void insertDepartment(@Param("department") Department department);
<insert id="insertDepartment" useGeneratedKeys="true" keyProperty="id">
insert into department (<include refid="insertFields"/>)
values (#{department.name},#{department.pid},#{department.createTime},#{department.updateTime})
</insert>
将 keyProperty="id"改成keyProperty="department.id"即可。