Skip to content

Commit

Permalink
setIncrBy和setDecrBy更新
Browse files Browse the repository at this point in the history
  • Loading branch information
miemieYaho committed Aug 8, 2024
1 parent 90fa3a4 commit cd42c65
Show file tree
Hide file tree
Showing 6 changed files with 76 additions and 133 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -94,17 +94,15 @@ public LambdaUpdateWrapper<T> setSql(boolean condition, String setSql, Object...
public LambdaUpdateWrapper<T> setIncrBy(boolean condition, SFunction<T, ?> column, Number val) {
return maybeDo(condition, () -> {
String realColumn = columnToString(column);
sqlSet.add(realColumn + Constants.EQUALS + realColumn + Constants.SPACE + Constants.PLUS + Constants.SPACE +
(val instanceof BigDecimal ? ((BigDecimal) val).toPlainString() : val));
sqlSet.add(String.format("%s=%s + %s", realColumn, realColumn, val instanceof BigDecimal ? ((BigDecimal) val).toPlainString() : val));
});
}

@Override
public LambdaUpdateWrapper<T> setDecrBy(boolean condition, SFunction<T, ?> column, Number val) {
return maybeDo(condition, () -> {
String realColumn = columnToString(column);
sqlSet.add(realColumn + Constants.EQUALS + realColumn + Constants.SPACE + Constants.DASH + Constants.SPACE +
(val instanceof BigDecimal ? ((BigDecimal) val).toPlainString() : val));
sqlSet.add(String.format("%s=%s - %s", realColumn, realColumn, val instanceof BigDecimal ? ((BigDecimal) val).toPlainString() : val));
});
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,7 @@ default Children setIncrBy(R column, Number val) {
* @param val 变量值 1 字段自减 - 1
*/
default Children setDecrBy(R column, Number val) {
return setIncrBy(true, column, val);
return setDecrBy(true, column, val);
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -117,16 +117,14 @@ public UpdateWrapper<T> setSql(boolean condition, String setSql, Object... param
@Override
public UpdateWrapper<T> setIncrBy(boolean condition, String column, Number val) {
return maybeDo(condition, () -> {
sqlSet.add(column + Constants.EQUALS + column + Constants.SPACE + Constants.PLUS + Constants.SPACE +
(val instanceof BigDecimal ? ((BigDecimal) val).toPlainString() : val));
sqlSet.add(String.format("%s=%s + %s", column, column, val instanceof BigDecimal ? ((BigDecimal) val).toPlainString() : val));
});
}

@Override
public UpdateWrapper<T> setDecrBy(boolean condition, String column, Number val) {
return maybeDo(condition, () -> {
sqlSet.add(column + Constants.EQUALS + column + Constants.SPACE + Constants.DASH + Constants.SPACE +
(val instanceof BigDecimal ? ((BigDecimal) val).toPlainString() : val));
sqlSet.add(String.format("%s=%s - %s", column, column, val instanceof BigDecimal ? ((BigDecimal) val).toPlainString() : val));
});
}

Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
package com.baomidou.mybatisplus.core.conditions;

import com.baomidou.mybatisplus.core.MybatisConfiguration;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.conditions.update.Update;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.TableInfo;
import com.baomidou.mybatisplus.core.metadata.TableInfoHelper;
import com.baomidou.mybatisplus.test.User;
import org.apache.ibatis.builder.MapperBuilderAssistant;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;

import java.math.BigDecimal;

/**
* @author miemie
* @since 2021-01-27
*/
class UpdateWrapperIncrDecrTest extends BaseWrapperTest {

@BeforeAll
static void initUser() {
TableInfo tableInfo = TableInfoHelper.initTableInfo(new MapperBuilderAssistant(new MybatisConfiguration(), ""), User.class);
Assertions.assertEquals("sys_user", tableInfo.getTableName());
}

@Test
void testIncrByAndDecrBy() {
assertEquals(new UpdateWrapper<User>()
.setIncrBy("role_id", 1).setDecrBy("username", 1),
"role_id=role_id + 1,username=username - 1");

assertEquals(new LambdaUpdateWrapper<User>()
.setIncrBy(User::getRoleId, 1).setDecrBy(User::getName, 1),
"role_id=role_id + 1,username=username - 1");
}

@Test
void testIncrByAndDecrByBigDecimal() {
assertEquals(new LambdaUpdateWrapper<User>()
.setIncrBy(User::getRoleId, new BigDecimal("1"))
.setIncrBy(User::getRoleId, new BigDecimal(1))
.setIncrBy(User::getRoleId, new BigDecimal(1.0000))
.setIncrBy(User::getRoleId, new BigDecimal("1.0000"))
.setIncrBy(User::getRoleId, new BigDecimal("0.01"))
.setIncrBy(User::getRoleId, new BigDecimal("2340")),
"role_id=role_id + 1,role_id=role_id + 1,role_id=role_id + 1," +
"role_id=role_id + 1.0000,role_id=role_id + 0.01,role_id=role_id + 2340");

assertEquals(new LambdaUpdateWrapper<User>()
.setDecrBy(User::getRoleId, new BigDecimal("1"))
.setDecrBy(User::getRoleId, new BigDecimal(1))
.setDecrBy(User::getRoleId, new BigDecimal(1.0000))
.setDecrBy(User::getRoleId, new BigDecimal("1.0000"))
.setDecrBy(User::getRoleId, new BigDecimal("0.01"))
.setDecrBy(User::getRoleId, new BigDecimal("2340")),
"role_id=role_id - 1,role_id=role_id - 1,role_id=role_id - 1," +
"role_id=role_id - 1.0000,role_id=role_id - 0.01,role_id=role_id - 2340");
}


private void assertEquals(Update<?, ?> update, String sql) {
Assertions.assertEquals(sql, update.getSqlSet());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -83,17 +83,17 @@ open class KtUpdateWrapper<T : Any> : AbstractKtWrapper<T, KtUpdateWrapper<T>>,
}
}

override fun setDecrBy(condition: Boolean, column: KProperty1<in T, *>, `val`: Number): KtUpdateWrapper<T> {
override fun setIncrBy(condition: Boolean, column: KProperty1<in T, *>, `val`: Number): KtUpdateWrapper<T> {
return maybeDo(condition) {
val realColumn = columnToString(column)
sqlSet.add(realColumn + Constants.EQUALS + realColumn + Constants.SPACE + Constants.PLUS + Constants.SPACE + (if (`val` is BigDecimal) `val`.toPlainString() else `val`))
sqlSet.add(String.format("%s=%s + %s", realColumn, realColumn, if (`val` is BigDecimal) `val`.toPlainString() else `val`))
}
}

override fun setIncrBy(condition: Boolean, column: KProperty1<in T, *>, `val`: Number): KtUpdateWrapper<T> {
override fun setDecrBy(condition: Boolean, column: KProperty1<in T, *>, `val`: Number): KtUpdateWrapper<T> {
return maybeDo(condition) {
val realColumn = columnToString(column)
sqlSet.add(realColumn + Constants.EQUALS + realColumn + Constants.SPACE + Constants.DASH + Constants.SPACE + (if (`val` is BigDecimal) `val`.toPlainString() else `val`))
sqlSet.add(String.format("%s=%s - %s", realColumn, realColumn, if (`val` is BigDecimal) `val`.toPlainString() else `val`));
}
}

Expand Down

0 comments on commit cd42c65

Please sign in to comment.