fix github issues/2931 解决结果集大于 Integer 异常问题
This commit is contained in:
parent
766b8bc143
commit
b988866c3d
@ -51,7 +51,7 @@ public interface ISqlRunner {
|
||||
|
||||
Object selectObj(String sql, Object... args);
|
||||
|
||||
int selectCount(String sql, Object... args);
|
||||
long selectCount(String sql, Object... args);
|
||||
|
||||
Map<String, Object> selectOne(String sql, Object... args);
|
||||
|
||||
|
@ -35,6 +35,6 @@ public class SelectCount extends AbstractMethod {
|
||||
String sql = String.format(sqlMethod.getSql(), sqlFirst(), sqlCount(), tableInfo.getTableName(),
|
||||
sqlWhereEntityWrapper(true, tableInfo), sqlComment());
|
||||
SqlSource sqlSource = languageDriver.createSqlSource(configuration, sql, modelClass);
|
||||
return this.addSelectMappedStatementForOther(mapperClass, getMethod(sqlMethod), sqlSource, Integer.class);
|
||||
return this.addSelectMappedStatementForOther(mapperClass, getMethod(sqlMethod), sqlSource, Long.class);
|
||||
}
|
||||
}
|
||||
|
@ -186,7 +186,7 @@ public interface BaseMapper<T> extends Mapper<T> {
|
||||
*
|
||||
* @param queryWrapper 实体对象封装操作类(可以为 null)
|
||||
*/
|
||||
Integer selectCount(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);
|
||||
Long selectCount(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);
|
||||
|
||||
/**
|
||||
* 根据 entity 条件,查询全部记录
|
||||
|
@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
/**
|
||||
* 只放mybatis-plus核心代码,不涉及数据库,不添加spring等
|
||||
* 只放mybatis-plus核心代码
|
||||
*
|
||||
* @author yuxiaobin
|
||||
* @since 2018-02-07
|
||||
|
@ -15,8 +15,6 @@
|
||||
*/
|
||||
package com.baomidou.mybatisplus.core.toolkit;
|
||||
|
||||
import org.apache.ibatis.logging.Log;
|
||||
import org.apache.ibatis.logging.LogFactory;
|
||||
import org.springframework.core.GenericTypeResolver;
|
||||
|
||||
import java.lang.reflect.AccessibleObject;
|
||||
@ -39,7 +37,6 @@ import static java.util.stream.Collectors.toMap;
|
||||
* @since 2016-09-22
|
||||
*/
|
||||
public final class ReflectionKit {
|
||||
private static final Log logger = LogFactory.getLog(ReflectionKit.class);
|
||||
/**
|
||||
* class field cache
|
||||
*/
|
||||
|
@ -223,12 +223,12 @@ public abstract class Model<T extends Model<?>> implements Serializable {
|
||||
*
|
||||
* @param queryWrapper 实体对象封装操作类(可以为 null)
|
||||
*/
|
||||
public Integer selectCount(Wrapper<T> queryWrapper) {
|
||||
public long selectCount(Wrapper<T> queryWrapper) {
|
||||
Map<String, Object> map = CollectionUtils.newHashMapWithExpectedSize(1);
|
||||
map.put(Constants.WRAPPER, queryWrapper);
|
||||
SqlSession sqlSession = sqlSession();
|
||||
try {
|
||||
return SqlHelper.retCount(sqlSession.<Integer>selectOne(sqlStatement(SqlMethod.SELECT_COUNT), map));
|
||||
return SqlHelper.retCount(sqlSession.<Long>selectOne(sqlStatement(SqlMethod.SELECT_COUNT), map));
|
||||
} finally {
|
||||
closeSqlSession(sqlSession);
|
||||
}
|
||||
|
@ -63,7 +63,7 @@ public interface ChainQuery<T> extends ChainWrapper<T> {
|
||||
*
|
||||
* @return count
|
||||
*/
|
||||
default Integer count() {
|
||||
default Long count() {
|
||||
return SqlHelper.retCount(getBaseMapper().selectCount(getWrapper()));
|
||||
}
|
||||
|
||||
|
@ -267,7 +267,7 @@ public interface IService<T> {
|
||||
*
|
||||
* @see Wrappers#emptyWrapper()
|
||||
*/
|
||||
default int count() {
|
||||
default long count() {
|
||||
return count(Wrappers.emptyWrapper());
|
||||
}
|
||||
|
||||
@ -276,7 +276,7 @@ public interface IService<T> {
|
||||
*
|
||||
* @param queryWrapper 实体对象封装操作类 {@link com.baomidou.mybatisplus.core.conditions.query.QueryWrapper}
|
||||
*/
|
||||
default int count(Wrapper<T> queryWrapper) {
|
||||
default long count(Wrapper<T> queryWrapper) {
|
||||
return SqlHelper.retCount(getBaseMapper().selectCount(queryWrapper));
|
||||
}
|
||||
|
||||
|
@ -111,7 +111,7 @@ public final class SqlHelper {
|
||||
* @param result ignore
|
||||
* @return int
|
||||
*/
|
||||
public static int retCount(Integer result) {
|
||||
public static long retCount(Long result) {
|
||||
return (null == result) ? 0 : result;
|
||||
}
|
||||
|
||||
|
@ -189,10 +189,10 @@ public class SqlRunner implements ISqlRunner {
|
||||
}
|
||||
|
||||
@Override
|
||||
public int selectCount(String sql, Object... args) {
|
||||
public long selectCount(String sql, Object... args) {
|
||||
SqlSession sqlSession = sqlSession();
|
||||
try {
|
||||
return SqlHelper.retCount(sqlSession.<Integer>selectOne(COUNT, sqlMap(sql, args)));
|
||||
return SqlHelper.retCount(sqlSession.<Long>selectOne(COUNT, sqlMap(sql, args)));
|
||||
} finally {
|
||||
closeSqlSession(sqlSession);
|
||||
}
|
||||
|
@ -108,7 +108,7 @@ class ActiveRecordTest {
|
||||
@Order(6)
|
||||
void testSelectCount() {
|
||||
H2Student student = new H2Student();
|
||||
int count = new H2Student().selectCount(new QueryWrapper<>(student));
|
||||
long count = new H2Student().selectCount(new QueryWrapper<>(student));
|
||||
LOGGER.info("count:{}", count);
|
||||
Assertions.assertTrue(count > 1);
|
||||
}
|
||||
@ -176,7 +176,7 @@ class ActiveRecordTest {
|
||||
);
|
||||
Assertions.assertNotNull(h2Student);
|
||||
LambdaQueryWrapper<H2Student> queryWrapper = new QueryWrapper<H2Student>().lambda().ge(H2Student::getAge, 1);
|
||||
int userCount = student.selectCount(queryWrapper.comment("getStuCount"));
|
||||
long userCount = student.selectCount(queryWrapper.comment("getStuCount"));
|
||||
Assertions.assertEquals(1, userCount);
|
||||
List<H2Student> h2StudentList = student.selectList(queryWrapper.comment("getStuList"));
|
||||
Assertions.assertEquals(1, h2StudentList.size());
|
||||
|
@ -77,7 +77,7 @@ class H2Delete1Eq1Test extends BaseTest {
|
||||
void delete() {
|
||||
logicDeleteMapper.delete(new QueryWrapper<>());
|
||||
defaultMapper.delete(new QueryWrapper<>());
|
||||
Assertions.assertEquals(0, (int) logicDeleteMapper.selectCount(new QueryWrapper<>()));
|
||||
Assertions.assertEquals(0, logicDeleteMapper.selectCount(new QueryWrapper<>()));
|
||||
List<H2User> userList = queryByName(null);
|
||||
System.out.println(userList.size());
|
||||
Assertions.assertNotEquals(0, userList.size());
|
||||
|
@ -93,7 +93,7 @@ class H2UserMapperTest extends BaseTest {
|
||||
Assertions.assertTrue(CollectionUtils.isNotEmpty(h2UserList));
|
||||
|
||||
// 查询总数
|
||||
int count = userMapper.selectCount(wrapper.clone());
|
||||
long count = userMapper.selectCount(wrapper.clone());
|
||||
Assertions.assertTrue(count > 1);
|
||||
|
||||
// 批量删除
|
||||
@ -188,7 +188,7 @@ class H2UserMapperTest extends BaseTest {
|
||||
);
|
||||
Assertions.assertNotNull(h2User);
|
||||
LambdaQueryWrapper<H2User> queryWrapper = new QueryWrapper<H2User>().lambda().ge(H2User::getAge, 1);
|
||||
int userCount = userMapper.selectCount(queryWrapper.comment("getUserCount"));
|
||||
long userCount = userMapper.selectCount(queryWrapper.comment("getUserCount"));
|
||||
Assertions.assertEquals(1, userCount);
|
||||
List<H2User> h2UserList = userMapper.selectList(queryWrapper.comment("getUserList"));
|
||||
Assertions.assertEquals(1, h2UserList.size());
|
||||
@ -208,4 +208,10 @@ class H2UserMapperTest extends BaseTest {
|
||||
userMapper.testPage1(new H2User(), page);
|
||||
userMapper.testPage2(page, new H2User());
|
||||
}
|
||||
|
||||
@Test
|
||||
void testCountLong(){
|
||||
Long count = userMapper.selectCountLong();
|
||||
System.out.println(count);
|
||||
}
|
||||
}
|
||||
|
@ -46,7 +46,7 @@ class SqlRunnerTest {
|
||||
@Test
|
||||
@Order(3)
|
||||
void testSelectCount(){
|
||||
int count = SqlRunner.db().selectCount("select count(1) from h2student");
|
||||
long count = SqlRunner.db().selectCount("select count(1) from h2student");
|
||||
Assertions.assertTrue(count > 0);
|
||||
count = SqlRunner.db().selectCount("select count(1) from h2student where id > {0}",0);
|
||||
Assertions.assertTrue(count > 0);
|
||||
|
@ -102,4 +102,7 @@ public interface H2UserMapper extends SuperMapper<H2User> {
|
||||
|
||||
@Select("select * from h2user")
|
||||
IPage<H2User> testPage2(@Param(value = "user") Page page, @Param(value = "page") H2User h2User);
|
||||
|
||||
@Select("select count(*) from h2user")
|
||||
Long selectCountLong();
|
||||
}
|
||||
|
@ -52,7 +52,7 @@ class SelectCountDistinctTest {
|
||||
.or()
|
||||
.eq("test_str", "test")
|
||||
.first("/*Force Master*/");
|
||||
int count = commonDataMapper.selectCount(distinct);
|
||||
long count = commonDataMapper.selectCount(distinct);
|
||||
Assertions.assertEquals(1, count);
|
||||
}
|
||||
|
||||
@ -62,7 +62,7 @@ class SelectCountDistinctTest {
|
||||
QueryWrapper<CommonData> distinct = new QueryWrapper<>();
|
||||
distinct.select("distinct test_int, test_str");
|
||||
distinct.eq("test_int", 25).or().eq("test_str", "test");
|
||||
int count = commonDataMapper.selectCount(distinct);
|
||||
long count = commonDataMapper.selectCount(distinct);
|
||||
Assertions.assertEquals(1, count);
|
||||
}
|
||||
|
||||
@ -72,7 +72,7 @@ class SelectCountDistinctTest {
|
||||
QueryWrapper<CommonLogicData> distinct = new QueryWrapper<>();
|
||||
distinct.select("distinct test_int");
|
||||
distinct.eq("test_int", 25).or().eq("test_str", "test");
|
||||
int count = commonLogicMapper.selectCount(distinct);
|
||||
long count = commonLogicMapper.selectCount(distinct);
|
||||
Assertions.assertEquals(1, count);
|
||||
}
|
||||
|
||||
@ -91,7 +91,7 @@ class SelectCountDistinctTest {
|
||||
void testLogicCountDistinctUseLambda() {
|
||||
LambdaQueryWrapper<CommonLogicData> lambdaQueryWrapper =
|
||||
new QueryWrapper<CommonLogicData>().select("distinct test_int").lambda();
|
||||
int count = commonLogicMapper.selectCount(lambdaQueryWrapper);
|
||||
long count = commonLogicMapper.selectCount(lambdaQueryWrapper);
|
||||
Assertions.assertEquals(1, count);
|
||||
}
|
||||
|
||||
@ -100,7 +100,7 @@ class SelectCountDistinctTest {
|
||||
void testCountDistinctUseLambda() {
|
||||
LambdaQueryWrapper<CommonData> lambdaQueryWrapper =
|
||||
new QueryWrapper<CommonData>().select("distinct test_int, test_str").lambda();
|
||||
int count = commonDataMapper.selectCount(lambdaQueryWrapper);
|
||||
long count = commonDataMapper.selectCount(lambdaQueryWrapper);
|
||||
Assertions.assertEquals(1, count);
|
||||
}
|
||||
|
||||
@ -109,7 +109,7 @@ class SelectCountDistinctTest {
|
||||
void testLogicSelectCountWithoutDistinct() {
|
||||
QueryWrapper<CommonLogicData> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.eq("test_int", 25).or().eq("test_str", "test");
|
||||
int count = commonLogicMapper.selectCount(queryWrapper);
|
||||
long count = commonLogicMapper.selectCount(queryWrapper);
|
||||
Assertions.assertEquals(2, count);
|
||||
}
|
||||
|
||||
@ -118,7 +118,7 @@ class SelectCountDistinctTest {
|
||||
void testCountDistinctWithoutDistinct() {
|
||||
QueryWrapper<CommonData> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.eq("test_int", 25).or().eq("test_str", "test");
|
||||
int count = commonDataMapper.selectCount(queryWrapper);
|
||||
long count = commonDataMapper.selectCount(queryWrapper);
|
||||
Assertions.assertEquals(2, count);
|
||||
}
|
||||
|
||||
|
@ -46,8 +46,8 @@ public class ShardingTest extends BaseDbTest<ShardingOrderMapper> {
|
||||
int affectedRow = m.update(entity, wrapper);
|
||||
assertThat(affectedRow).as("更新成功").isEqualTo(1);
|
||||
|
||||
affectedRow = m.selectCount(wrapper);
|
||||
assertThat(affectedRow).as("查询记录数").isEqualTo(1);
|
||||
long row = m.selectCount(wrapper);
|
||||
assertThat(row).as("查询记录数").isEqualTo(1);
|
||||
});
|
||||
|
||||
doTest(m -> {
|
||||
|
Loading…
x
Reference in New Issue
Block a user