mybatis批量修改2种方式

一种:根据ID集合批量修改属性

列如:mapper层

/**
 * 批量删除员工
 * @param param 入参
 */
void batchEmpStatus(DeleteEmpParam param);

mapper.xml层

<update id="batchEmpStatus" parameterType="net.sharing.backstage.oa.param.emp.DeleteEmpParam">
    update oa_emp set del_flag = 1,updater_id = #{updaterId},updater_name = #   {updaterName}
    where merchant_id = #{merchantId}
    <if test="ids != null and ids.size() >0 ">
        and `id` in
        <foreach collection="ids" item="item" separator="," open="(" close=")">
            #{item}
        </foreach>
    </if>
</update>

实体类:DeleteEmpParam

package net.sharing.backstage.oa.param.emp;

import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import net.sharing.backstage.oa.annotation.Open;

import javax.validation.constraints.NotNull;
import java.util.List;

/**
 * @program: sharing-backstage
 * @Description: 删除员工实体类
 * @Author: zwx
 * @Date: 2022/1/20 18:20
 */
@Data
@Accessors(chain = true)
public class DeleteEmpParam {

    /**
     * 商户id
     */
    private Long merchantId;

    /**
     * 0删除时同时禁用对应的账号, 1不禁用对应的账号
     */
    @ApiModelProperty("0删除时同时禁用对应的账号, 1不禁用对应的账号")
    @NotNull(message = "0删除时同时禁用对应的账号, 1不禁用对应的账号不能为空!")
    private Integer flag;
    /**
     * 员工ID集合
     */
    @ApiModelProperty("员工ID集合")
    @NotNull(message = "员工ID集合不能为空!")
    private List<Long> ids;

    /**
     * 更新人ID
     */
    private Long updaterId;

    /**
     * 更新人姓名
     */
    private String updaterName;


}

二种:批量修改多个属性

mapper层:

/**
 * 批量修改员工表状态和userId
 * @param list 入参
 */
void batchUpdateEmpAccStatus(@Param("list") List<EmpParam> list);

mapper.xml层:

<update id="batchUpdateEmpAccStatus">
    <foreach collection="list" item="item" index="index" open="" close="" separator=";">
        update oa_emp
        <set>
            `user_id`= ${item.userId},
            `acc_status` = ${item.accStatus},
            `updater_id` = ${item.updaterId},
            `updater_name` = ${item.updaterName}
        </set>
        where `id` = ${item.id}
    </foreach>
</update>

实体类:EmpParam

/**
 * @program: sharing-backstage
 * @Description: 员工入参
 * @Author: zwx
 * @Date: 2022/1/19 10:44
 */
@Data
@Accessors(chain = true)
public class EmpParam {
    /**
     * 员工ID
     */
    @ApiModelProperty("员工ID")
    @NotNull(groups = {Open.class},message = "员工ID不能为空!")
    private Long id;
    /**
     * 商户ID
     */
    @ApiModelProperty("商户ID")
    private Long merchantId;
    /**
     * 用户ID
     */
    @ApiModelProperty("用户ID")
    private Long userId;
    /**
     * 用户头像url
     */
    @ApiModelProperty("用户头像url")
    private String headUrl;
    /**
     * 员工姓名
     */
    @NotBlank(groups = {Insert.class,Open.class},message = "员工姓名不能为空!")
    @Size(groups = {Insert.class,Open.class},max = 20, message = "员工姓名长度不能超过20个字符!")
    @ApiModelProperty("员工姓名")
    private String name;
    /**
     * 姓名/工号
     */
    @ApiModelProperty("姓名/工号")
    private String keyWord;
    /**
     * 员工工号
     */
    @NotBlank(groups = {Insert.class},message = "员工工号不能为空!")
    @Size(groups = {Insert.class},max = 10, message = "员工工号长度不能超过10个字符!")
    @ApiModelProperty("员工工号")
    private String workCode;
    /**
     * 员工手机号码
     */
    @NotBlank(groups = {Insert.class,Open.class},message = "手机号码不能为空!")
    @Pattern(groups = {Insert.class,Open.class},regexp = "^1\\d{10}$", message = "手机号必须是11位数字,并以1开头")
    @ApiModelProperty("员工手机号码")
    private String phone;
    /**
     * 部门ID
     */
    @ApiModelProperty("部门ID")
    @NotNull(groups = {Insert.class,Open.class},message = "部门id不能为空!")
    private Long deptId;

    /**
     * 部门编码
     */
    @ApiModelProperty("部门编码")
    private String deptCode;
    /**
     * 岗位
     */
    @ApiModelProperty("岗位")
    private String postName;
    /**
     * 直接上级ID
     */
    @ApiModelProperty("直接上级ID")
    private Long leaderId;
    /**
     * 性别 0女 1男 2 未知
     */
    @ApiModelProperty("性别 0女 1男 2 未知")
    private Integer sex;
    /**
     * 出生日期
     */
    @ApiModelProperty("出生日期")
    private String birthday;
    /**
     * 年龄
     */
    @ApiModelProperty("年龄")
    private Integer age;
    /**
     * 学历code,数据字典
     */
    @ApiModelProperty("学历code,数据字典")
    private String eduCode;
    /**
     * 同时开通账户开关:0关,1开
     */
    @ApiModelProperty("同时开通账户开关:0关,1开")
    @NotNull(groups = {Insert.class,Open.class},message = "同时开通账户开关:0关,1开!")
    private Integer accStatus;
    /**
     * 登录账号:上述开关传1开启时,此字段必填
     */
    @ApiModelProperty("登录账号:上述开关传1开启时,此字段必填")
    @NotBlank(groups = {Open.class},message = "登录账号不能为空!")
    @Size(groups = {Insert.class,Open.class},min = 6,max = 20, message = "请输入6~20位登录账号")
    private String loginAcc;
    /**
     * 初始密码
     */
    @ApiModelProperty("初始密码")
    @Size(groups = {Insert.class,Open.class},min = 6,max = 20, message = "请输入6~20位登录密码")
    private String initPassword;
    /**
     * 用户角色
     */
    @ApiModelProperty("用户角色")
    private List<Long> roleIds;
}

版权声明:程序员胖胖胖虎阿 发表于 2023年9月3日 上午2:40。
转载请注明:mybatis批量修改2种方式 | 胖虎的工具箱-编程导航

相关文章

暂无评论

暂无评论...