mybatis 更新一条记录,同时返回该条记录的指定参数

更新数据同时返回被更新记录的参数

1.实体类

public class txy_training_class_leave {

    private String trainingId;
    private String type;
    private Date courseDate;
    private String signType;
    private String signLocation;

    private String userId;
    private String baseId;
}

2.实现类代码

@Override
    public String updateCourseLeaveRecallState(TxyTrainingClassSignDto dto) {
    	// 这里只返回baseId
        txyTrainingClassLeaveMapper.updateCourseLeaveRecallState(dto);
        return dto.getBaseId();
    }

3.Mapper类代码

// 这里不需要指定返回参数类型 
void updateCourseLeaveRecallState(TxyTrainingClassSignDto dto);

4.xml代码

//xml代码
<update id="updateCourseLeaveRecallState" parameterType="com.test.bean.txy_training_class_leave ">
        <selectKey resultType="java.lang.String" keyProperty='baseId' order='BEFORE'>
            SELECT
            (select base_id FROM txy_training_class_leave WHERE
            is_delete = '0'
            AND training_id = #{trainingId} AND course_date = DATE_FORMAT( #{courseDate}, '%Y-%m-%d' )
            AND type = #{signType} AND user_id=#{userId}) baseId
            from DUAL
        </selectKey>
        UPDATE txy_training_class_leave
        SET recall_state='1',recall_time=now()
        WHERE
        is_delete = '0'
        AND training_id = #{trainingId} AND course_date =DATE_FORMAT( #{courseDate}, '%Y-%m-%d' )
        AND type = #{signType} AND user_id=#{userId}
    </update>

// 此处的 keyProperty=’baseId’ 是指将查询出来的baseId 映射到传入更新方法updateCourseLeaveRecallState的使用的实体类txy_training_class_leave 的 baseId参数中 。类型为String


版权声明:本文为Mr_SnakeZ原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。