!404 fix Db.updateEntitiesBatch更新部分字段时报错的问题

Merge pull request !404 from tangxin/main
This commit is contained in:
Michael Yang 2024-01-04 02:55:59 +00:00 committed by Gitee
commit b2f701d7bb
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
3 changed files with 25 additions and 15 deletions

View File

@ -247,8 +247,8 @@ public class RowSqlProvider {
FlexAssert.notNull(entity, "entity can not be null");
// Mapper 是通用 Mapper 无法通过 ProviderContext 获取直接使用 TableInfoFactory
TableInfo tableInfo = TableInfoFactory.ofEntityClass(ClassUtil.getUsefulClass(entity.getClass()));
TableInfo tableInfo = TableInfoFactory.ofEntityClass(ClassUtil.getUsefulClass(entity.getClass()));
// 执行 onUpdate 监听器
tableInfo.invokeOnUpdateListener(entity);

View File

@ -70,14 +70,15 @@ public class ClassUtil {
}
public static <T> Class<T> getUsefulClass(Class<T> clazz) {
if (ProxyObject.class.isAssignableFrom(clazz)) {
return (Class<T>) clazz.getSuperclass();
}
if (isProxy(clazz)) {
return getJdkProxySuperClass(clazz);
}
// if (ProxyObject.class.isAssignableFrom(clazz)){
// return (Class<T>) clazz.getSuperclass();
// }
//ControllerTest$ServiceTest$$EnhancerByGuice$$40471411#hello -------> Guice
//com.demo.blog.Blog$$EnhancerByCGLIB$$69a17158 ----> CGLIB
//io.jboot.test.app.TestAppListener_$$_jvstb9f_0 ------> javassist

View File

@ -82,19 +82,28 @@ public class DbTest {
Map map2 = Db.selectFirstAndSecondColumnsAsMap("select * from tb_account");
System.out.println(map);
System.out.println(map2);
assert map.equals(map2);
}
@Test
public void test03() {
Account account = UpdateEntity.of(Account.class,1);
account.setAge(1);
List<Account> accounts = new ArrayList<>();
accounts.add(account);
Account account2 = UpdateEntity.of(Account.class,2);
account2.setAge(2);
UpdateWrapper updateWrapper = UpdateWrapper.of(account2);
updateWrapper.setRaw("age","age+1");
accounts.add(account2);
Db.updateEntitiesBatch(accounts);
try {
Account account = UpdateEntity.of(Account.class, 1);
account.setAge(1);
List<Account> accounts = new ArrayList<>();
accounts.add(account);
Account account2 = UpdateEntity.of(Account.class, 2);
account2.setAge(2);
UpdateWrapper updateWrapper = UpdateWrapper.of(account2);
updateWrapper.setRaw("age", "age+1");
accounts.add(account2);
Account account3 = new Account();
account3.setId(3L);
account3.setAge(4);
accounts.add(account3);
Db.updateEntitiesBatch(accounts);
}catch (Exception e){
assert false;
}
}
}