修复ArithmeticQueryColumn算术运算无法拼接条件的问题 #添加测试代码

This commit is contained in:
guanmengyuan 2023-11-09 14:32:16 +08:00
parent 390b01c4eb
commit a4678770bb
4 changed files with 117 additions and 0 deletions

View File

@ -31,7 +31,10 @@ public class ArithmeticQueryColumnTest {
return dialect.forSelectByQuery(queryWrapper);
}
@Test
public void testAddWithCondition(){
}
@Test
public void testAdd() {
QueryWrapper query = new QueryWrapper()

View File

@ -0,0 +1,71 @@
package com.mybatisflex.test;
import com.mybatisflex.annotation.Id;
import com.mybatisflex.annotation.KeyType;
import com.mybatisflex.annotation.Table;
import com.mybatisflex.core.activerecord.Model;
import com.mybatisflex.core.keygen.KeyGenerators;
import java.math.BigDecimal;
@Table("demo")
public class Demo extends Model<Demo> {
@Id(keyType = KeyType.Generator, value = KeyGenerators.snowFlakeId)
private String id;
public static Demo create() {
return new Demo();
}
private BigDecimal firstField;
private String userId;
private BigDecimal secondField;
private String foreignId;
public String getId() {
return id;
}
public Demo setId(String id) {
this.id = id;
return this;
}
public BigDecimal getFirstField() {
return firstField;
}
public Demo setFirstField(BigDecimal firstField) {
this.firstField = firstField;
return this;
}
public String getUserId() {
return userId;
}
public Demo setUserId(String userId) {
this.userId = userId;
return this;
}
public BigDecimal getSecondField() {
return secondField;
}
public Demo setSecondField(BigDecimal secondField) {
this.secondField = secondField;
return this;
}
public String getForeignId() {
return foreignId;
}
public Demo setForeignId(String foreignId) {
this.foreignId = foreignId;
return this;
}
}

View File

@ -0,0 +1,18 @@
package com.mybatisflex.test;
import com.mybatisflex.core.query.QueryMethods;
import org.junit.Test;
import java.math.BigDecimal;
public class ArithmeticQueryColumnTest {
@Test
public void testAddWithCondition() {
BigDecimal bigDecimal = Demo.create()
.select(QueryMethods.sum(Demo::getFirstField)
.add(QueryMethods.sum(QueryMethods.if_(QueryMethods.column(Demo::getForeignId).eq("1"), QueryMethods.column(Demo::getSecondField), QueryMethods.number(0)))))
.where(Demo::getUserId).eq("1").objAsOpt(BigDecimal.class).orElse(BigDecimal.ZERO);
System.out.println(bigDecimal);
}
}

View File

@ -0,0 +1,25 @@
CREATE TABLE `demo`
(
`id` varchar(255) COLLATE utf8mb4_general_ci NOT NULL,
`first_field` decimal(10, 2) DEFAULT NULL,
`foreign_id` varchar(255) collate utf8mb4_general_ci default null,
second_field decimal(10, 2) DEFAULT NULL,
user_id varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
INSERT INTO `demo` (`id`, `first_field`, `foreign_id`, second_field, user_id)
values ('1', 10.12, '1', 12.2, '1');
INSERT INTO `demo` (`id`, `first_field`, `foreign_id`, second_field, user_id)
values ('2', 10.12, '2', 12.2, '1');
INSERT INTO `demo` (`id`, `first_field`, `foreign_id`, second_field, user_id)
values ('3', 10.12, '3', 12.2, '1');
INSERT INTO `demo` (`id`, `first_field`, `foreign_id`, second_field, user_id)
values ('4', 10.12, '4', 12.2, '1');
INSERT INTO `demo` (`id`, `first_field`, `foreign_id`, second_field, user_id)
values ('5', 10.12, '5', 12.2, '1');
INSERT INTO `demo` (`id`, `first_field`, `foreign_id`, second_field, user_id)
values ('6', 10.12, '6', NUll, '1');
INSERT INTO `demo` (`id`, `first_field`, `foreign_id`, second_field, user_id)
values ('7', NULL, '7', 12.2, '1');