Mybatis中updateByExampleSelective与updateByExample的区别

方法组成:

updateByExampleSelective(@Param("record") Xxx record, @Param("example") XxxExample example);

第一个参数 是要修改的部分值组成的对象,其中有些属性为null则表示该项不修改。

第二个参数 是一个对应的查询条件的类, 通过这个类可以实现 order by 和一部分的where 条件。

使用方法如下:

XxxExample example = new XxxExample();
Criteria  criteria = example.createCriteria();
// 这个内部类中有对应Xxx的每个属性的条件方法 .
// 假如 Xxx 包含id 属性.
// 那它就有 andId(属性)EqualTo(SQL里的各种标准条件语句, =、!=、<、>、in、like、not之类的)的方法.
criteria.andIdEqualTo(paramId).andAgeIn(Arrays.asList({10,20,30}));
xxxMapper.updateByExampleSelective(xx,example);

代码例子:

public ResponseData testUpdate(){
        //是一个对应的查询条件的类
        Employee employee = new Employee();
        employee.setEmployeeCode("test_code");
        employee.setName("test_name");
        employee.setCertificateId("1");
        employee.setStatus("N");
        employee.setEnabledFlag("N");
        Example example = new Example(Employee.class);
        Example.Criteria criteria = example.createCriteria();
        //和某个属性值相等
        criteria.andEqualTo("employeeCode", employee.getEmployeeCode());
        //比某个属性大
        criteria.andGreaterThan("certificateId", employee.getCertificateId());
        criteria.andEqualTo("status", employee.getStatus());
        criteria.andEqualTo("enabledFlag", employee.getEnabledFlag());
        //要修改的部分值组成的对象 属性为空 代表该属性不进行修改
        Employee employee2 = new Employee();
        employee2.setName("xjq");
        employeeMapper.updateByExampleSelective(employee2, example);
        return null;
}

updateByExample针对第一个参数,如果没给值的话,则默认属性都赋值为NULL,它没有非空的动态判断。

生成的代码结构是如下这样的:

UPDATE hr_employee SET REQUEST_ID = -1,PROGRAM_ID = -1,OBJECT_VERSION_NUMBER=OBJECT_VERSION_NUMBER+1,LAST_UPDATED_BY = null,LAST_UPDATE_DATE=CURRENT_TIMESTAMP,LAST_UPDATE_LOGIN = null,ATTRIBUTE_CATEGORY = null,ATTRIBUTE1 = null,ATTRIBUTE2 = null,ATTRIBUTE3 = null,ATTRIBUTE4 = null,ATTRIBUTE5 = null,ATTRIBUTE6 = null,ATTRIBUTE7 = null,ATTRIBUTE8 = null,ATTRIBUTE9 = null,ATTRIBUTE10 = null,ATTRIBUTE11 = null,ATTRIBUTE12 = null,ATTRIBUTE13 = null,ATTRIBUTE14 = null,ATTRIBUTE15 = null,EMPLOYEE_CODE = null,NAME = null,BORN_DATE = null,EMAIL = null,MOBIL = null,JOIN_DATE = null,GENDER = null,CERTIFICATE_ID = null,STATUS = null,ENABLED_FLAG = null,CERTIFICATE_TYPE = null,EFFECTIVE_START_DATE = null,EFFECTIVE_END_DATE = null
 WHERE ( EMPLOYEE_CODE = 'test_code' and CERTIFICATE_ID > '1' and STATUS = 'N' and ENABLED_FLAG = 'N' );

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值