test: update test

This commit is contained in:
Michael Yang 2024-10-05 15:09:08 +08:00
parent 9f142276da
commit a221833742
2 changed files with 23 additions and 11 deletions

View File

@ -20,6 +20,7 @@ import com.mybatisflex.core.MybatisFlexBootstrap;
import com.mybatisflex.core.audit.AuditManager; import com.mybatisflex.core.audit.AuditManager;
import com.mybatisflex.core.audit.ConsoleMessageCollector; import com.mybatisflex.core.audit.ConsoleMessageCollector;
import com.mybatisflex.core.datasource.DataSourceKey; import com.mybatisflex.core.datasource.DataSourceKey;
import com.mybatisflex.core.logicdelete.LogicDeleteManager;
import com.mybatisflex.core.mybatis.Mappers; import com.mybatisflex.core.mybatis.Mappers;
import com.mybatisflex.core.query.If; import com.mybatisflex.core.query.If;
import com.mybatisflex.core.query.QueryColumnBehavior; import com.mybatisflex.core.query.QueryColumnBehavior;
@ -30,6 +31,7 @@ import com.mybatisflex.core.update.UpdateChain;
import com.mybatisflex.core.update.UpdateWrapper; import com.mybatisflex.core.update.UpdateWrapper;
import com.mybatisflex.core.util.UpdateEntity; import com.mybatisflex.core.util.UpdateEntity;
import com.mybatisflex.mapper.ArticleMapper; import com.mybatisflex.mapper.ArticleMapper;
import com.mybatisflex.test.table.ArticleTableDef;
import org.apache.ibatis.logging.stdout.StdOutImpl; import org.apache.ibatis.logging.stdout.StdOutImpl;
import org.assertj.core.api.WithAssertions; import org.assertj.core.api.WithAssertions;
import org.assertj.core.data.Index; import org.assertj.core.data.Index;
@ -236,29 +238,36 @@ public class AccountNativeTest implements WithAssertions {
*/ */
@Test @Test
public void testGiteeIssue_I7QD29() { public void testGiteeIssue_I7QD29() {
LogicDeleteManager.execWithoutLogicDelete(()->{
QueryWrapper queryWrapper = QueryWrapper.create(); QueryWrapper queryWrapper = QueryWrapper.create();
ArticleTableDef a1 = ARTICLE.as("a1");
ArticleTableDef a2 = ARTICLE.as("a2");
queryWrapper.from(ACCOUNT) queryWrapper.from(ACCOUNT)
.leftJoin(ARTICLE).as("a1").on(ACCOUNT.ID.eq(ARTICLE.ACCOUNT_ID)) .leftJoin(a1).on(ACCOUNT.ID.eq(a1.ACCOUNT_ID))
.leftJoin(ARTICLE).as("a2").on(ACCOUNT.ID.eq(ARTICLE.ACCOUNT_ID)) .leftJoin(a2).on(ACCOUNT.ID.eq(a2.ACCOUNT_ID))
.where(ACCOUNT.ID.ge(1)); .where(ACCOUNT.ID.ge(1));
List<Article> accounts = articleMapper.selectListByQuery(queryWrapper); List<Article> accounts = articleMapper.selectListByQuery(queryWrapper);
accounts = articleMapper.selectListByQuery(queryWrapper); accounts = articleMapper.selectListByQuery(queryWrapper);
String expectSql = "SELECT * FROM `tb_account` " + String expectSql = "SELECT * FROM `tb_account` " +
"LEFT JOIN `tb_article` AS `a1` ON (`tb_account`.`id` = `a1`.`account_id`) AND `a1`.`is_delete` = 0 " + "LEFT JOIN `tb_article` AS `a1` ON `tb_account`.`id` = `a1`.`account_id` " +
"LEFT JOIN `tb_article` AS `a2` ON (`tb_account`.`id` = `a1`.`account_id`) AND `a2`.`is_delete` = 0 " + "LEFT JOIN `tb_article` AS `a2` ON `tb_account`.`id` = `a2`.`account_id` " +
"WHERE (`tb_account`.`id` >= 1) AND `tb_account`.`is_delete` = 0"; "WHERE `tb_account`.`id` >= 1";
// "WHERE `tb_account`.`id` >= 1"; // "WHERE `tb_account`.`id` >= 1";
//SELECT * FROM `tb_account` //SELECT * FROM `tb_account`
// LEFT JOIN `tb_article` AS `a1` ON (`tb_account`.`id` = `a1`.`account_id`) AND `a1`.`is_delete` = 0 // LEFT JOIN `tb_article` AS `a1` ON (`tb_account`.`id` = `a1`.`account_id`) AND `a1`.`is_delete` = 0
// LEFT JOIN `tb_article` AS `a2` ON (`tb_account`.`id` = `a1`.`account_id`) AND `a2`.`is_delete` = 0 // LEFT JOIN `tb_article` AS `a2` ON (`tb_account`.`id` = `a1`.`account_id`) AND `a2`.`is_delete` = 0
// WHERE `tb_account`.`id` >= 1 // WHERE `tb_account`.`id` >= 1
System.out.println("aa>>11: \"" + queryWrapper.toSQL()+"\""); System.out.println("aa>>11: \"" + queryWrapper.toSQL()+"\"");
System.out.println("aa>>22: \"" + expectSql+"\"");
// SELECT * FROM `tb_account` // SELECT * FROM `tb_account`
// LEFT JOIN `tb_article` AS `a1` ON (`tb_account`.`id` = `a1`.`account_id`) AND `a1`.`is_delete` = 0 // LEFT JOIN `tb_article` AS `a1` ON (`tb_account`.`id` = `a1`.`account_id`) AND `a1`.`is_delete` = 0
// LEFT JOIN `tb_article` AS `a2` ON (`tb_account`.`id` = `a1`.`account_id`) AND `a2`.`is_delete` = 0 // LEFT JOIN `tb_article` AS `a2` ON (`tb_account`.`id` = `a1`.`account_id`) AND `a2`.`is_delete` = 0
// WHERE `tb_account`.`id` >= 1 // WHERE `tb_account`.`id` >= 1
// assertThat(queryWrapper.toSQL()).isEqualTo(expectSql); assertThat(queryWrapper.toSQL()).isEqualTo(expectSql);
assertThat(accounts).hasSize(9); // assertThat(accounts).hasSize(9);
});
} }
/** /**

View File

@ -44,14 +44,16 @@ public class EnumTest implements WithAssertions {
QueryWrapper query = new QueryWrapper() QueryWrapper query = new QueryWrapper()
.select() .select()
.from(ACCOUNT).where(ACCOUNT.SEX.in(Sex.MALE, Sex.FEMALE)); .from(ACCOUNT).where(ACCOUNT.SEX.in(Sex.MALE, Sex.FEMALE));
// 注意此处虽然显示是MALEFEMALE但是如果使用了枚举的typeHandler实际sql执行时会使用typeHandler进行处理
assertThat(query.toSQL()).isEqualTo("SELECT * FROM `tb_account` WHERE `sex` IN ('MALE', 'FEMALE')"); System.out.println("sql >>aa: " + query.toSQL());
assertThat(query.toSQL()).isEqualTo("SELECT * FROM `tb_account` WHERE `sex` IN (MALE, FEMALE)");
List<Account> list = accountMapper.selectListByQuery(query); List<Account> list = accountMapper.selectListByQuery(query);
assertThat(list).isNotNull(); assertThat(list).isNotNull();
for (Account account : list) { for (Account account : list) {
assertThat(account.getSex()).isIn(Sex.MALE, Sex.FEMALE); assertThat(account.getSex()).isIn(Sex.MALE, Sex.FEMALE);
} }
} }
@Test @Test
public void test_create_entity_with_enum_type() { public void test_create_entity_with_enum_type() {
Account account = new Account(); Account account = new Account();
@ -59,13 +61,14 @@ public class EnumTest implements WithAssertions {
QueryWrapper queryWrapper = QueryWrapper.create(account); QueryWrapper queryWrapper = QueryWrapper.create(account);
String sql = queryWrapper.toSQL(); String sql = queryWrapper.toSQL();
System.out.println(sql); System.out.println(sql);
// 注意此处虽然显示是MALE但是如果使用了枚举的typeHandler实际sql执行时会使用typeHandler进行处理
assertThat(sql).isEqualTo("SELECT `id`, `user_name`, `age`, `birthday`, `sex` FROM `tb_account` WHERE `sex` = 'MALE'");
List<Account> list = accountMapper.selectListByQuery(queryWrapper); List<Account> list = accountMapper.selectListByQuery(queryWrapper);
assertThat(list).isNotNull(); assertThat(list).isNotNull();
for (Account item : list) { for (Account item : list) {
assertThat(item.getSex()).isEqualTo(Sex.MALE); assertThat(item.getSex()).isEqualTo(Sex.MALE);
} }
assertThat(sql).isEqualTo("SELECT `id`, `user_name`, `age`, `birthday`, `sex` FROM `tb_account` WHERE `sex` = 1");
} }
} }