做两张表关联的操作,倒是不复杂,按照网上的写法
<insert id="insertTask" parameterType="com.suning.rdrs.admin.po.Task"> insert into TASK ( TASKNAME, USERNAME, TASK_TYPE,STATUS,GMT_CREATE,GMT_START) values (#{taskName}, #{userName}, #{taskType}, #{status}, #{gmt_create}, #{gmt_start}) <selectKey resultType="java.lang.Integer" order="AFTER" keyProperty="id"> SELECT LAST_INSERT_ID() </selectKey>
本以为是insertTask这个方法返回的结果是id,耗了一个下午。结果不是,而是那个插入的po类,需要用po的getId方法得到id
Task inputTask = JSON.parseObject(taskInfo,Task.class); Integer taskId = taskService.insertTask(inputTask); System.out.println(inputTask.getId());
同时在网上看到有些评论是这样说的,由于事务是加在service层,所以service执行完了,才能拿到这个id。但是我这里不是这样的,看mybatis的日志,
SELECT LAST_INSERT_ID()和inset 操作在一个事务中执行的。