Db.selectFirstAndSecondColumnsAsMap 支持(查询结果的第一列作为key,第二列作为value)

This commit is contained in:
tangxin 2023-12-18 10:02:13 +08:00
parent f7f3295058
commit 8999be6026
6 changed files with 21 additions and 17 deletions

View File

@ -27,6 +27,9 @@ String listsql = "select * from tb_account where age > ?"
List<Row> rows = Db.selectListBySql(listsql,18); List<Row> rows = Db.selectListBySql(listsql,18);
//查询所有大于 18 岁用户的Id和用户名对应的Map
Map map = Db.selectFirstAndSecondColumnsAsMap("select id,user_name from tb_account where age >?",18);
//分页查询:每页 10 条数据,查询第 3 页的年龄大于 18 的用户 //分页查询:每页 10 条数据,查询第 3 页的年龄大于 18 的用户
QueryWrapper query=QueryWrapper.create() QueryWrapper query=QueryWrapper.create()
.where(ACCOUNT.AGE.ge(18)); .where(ACCOUNT.AGE.ge(18));

View File

@ -290,7 +290,7 @@ public class FlexDefaultResultSetHandler extends DefaultResultSetHandler {
if (parentMapping != null) { if (parentMapping != null) {
handleRowValues(rsw, resultMap, null, RowBounds.DEFAULT, parentMapping); handleRowValues(rsw, resultMap, null, RowBounds.DEFAULT, parentMapping);
} else if (resultHandler == null) { } else if (resultHandler == null) {
if(resultMap.getId().startsWith("com.mybatisflex.core.row.RowMapper.selectMap")){ if(resultMap.getId().startsWith("com.mybatisflex.core.row.RowMapper.selectFirstAndSecondColumnsAsMap")){
ResultSet resultSet = rsw.getResultSet(); ResultSet resultSet = rsw.getResultSet();
skipRows(resultSet, rowBounds); skipRows(resultSet, rowBounds);
Map<Object,Object> row = new HashMap<>(); Map<Object,Object> row = new HashMap<>();

View File

@ -860,8 +860,8 @@ public class Db {
* @param queryWrapper query 封装 * @param queryWrapper query 封装
* @return 数据内容 * @return 数据内容
*/ */
public static Map selectMap(QueryWrapper queryWrapper) { public static Map selectFirstAndSecondColumnsAsMap(QueryWrapper queryWrapper) {
return invoker().selectMapByQuery(null, null, queryWrapper); return invoker().selectFirstAndSecondColumnsAsMapByQuery(null, null, queryWrapper);
} }
/** /**
@ -870,8 +870,8 @@ public class Db {
* @param sql sql 内容 * @param sql sql 内容
* @param args sql 参数 * @param args sql 参数
*/ */
public static Map selectMap(String sql, Object... args) { public static Map selectFirstAndSecondColumnsAsMap(String sql, Object... args) {
return invoker().selectMap(sql, args); return invoker().selectFirstAndSecondColumnsAsMap(sql, args);
} }
/** /**
@ -882,8 +882,8 @@ public class Db {
* @param queryWrapper query 封装 * @param queryWrapper query 封装
* @return 数据内容 * @return 数据内容
*/ */
public static Map selectMap(String schema, String tableName, QueryWrapper queryWrapper) { public static Map selectFirstAndSecondColumnsAsMap(String schema, String tableName, QueryWrapper queryWrapper) {
return invoker().selectMapByQuery(schema, tableName, queryWrapper); return invoker().selectFirstAndSecondColumnsAsMapByQuery(schema, tableName, queryWrapper);
} }
/** /**
@ -893,8 +893,8 @@ public class Db {
* @param queryWrapper query 封装 * @param queryWrapper query 封装
* @return 数据内容 * @return 数据内容
*/ */
public static Map selectMap(String tableName, QueryWrapper queryWrapper) { public static Map selectFirstAndSecondColumnsAsMap(String tableName, QueryWrapper queryWrapper) {
return invoker().selectMapByQuery(null, tableName, queryWrapper); return invoker().selectFirstAndSecondColumnsAsMapByQuery(null, tableName, queryWrapper);
} }
/** /**

View File

@ -328,10 +328,10 @@ public interface RowMapper {
@SelectProvider(value = RowSqlProvider.class, method = RowSqlProvider.METHOD_RAW_SQL) @SelectProvider(value = RowSqlProvider.class, method = RowSqlProvider.METHOD_RAW_SQL)
Map selectMap(@Param(FlexConsts.SQL) String sql, @Param(FlexConsts.SQL_ARGS) Object... args); Map selectFirstAndSecondColumnsAsMap(@Param(FlexConsts.SQL) String sql, @Param(FlexConsts.SQL_ARGS) Object... args);
@SelectProvider(type = RowSqlProvider.class, method = "selectListByQuery") @SelectProvider(type = RowSqlProvider.class, method = "selectListByQuery")
Map selectMapByQuery(@Param(FlexConsts.SCHEMA_NAME) String schema Map selectFirstAndSecondColumnsAsMapByQuery(@Param(FlexConsts.SCHEMA_NAME) String schema
, @Param(FlexConsts.TABLE_NAME) String tableName, @Param(FlexConsts.QUERY) QueryWrapper queryWrapper); , @Param(FlexConsts.TABLE_NAME) String tableName, @Param(FlexConsts.QUERY) QueryWrapper queryWrapper);
/** /**
* 通过 sql 查询多行数据sql 执行的结果应该只有 1 * 通过 sql 查询多行数据sql 执行的结果应该只有 1
@ -459,4 +459,5 @@ public interface RowMapper {
} }
} }

View File

@ -189,11 +189,11 @@ public class RowMapperInvoker {
public List<Row> selectAll(String schema, String tableName) { public List<Row> selectAll(String schema, String tableName) {
return execute(mapper -> mapper.selectAll(schema, tableName)); return execute(mapper -> mapper.selectAll(schema, tableName));
} }
public Map selectMapByQuery(String schema, String tableName, QueryWrapper queryWrapper) { public Map selectFirstAndSecondColumnsAsMapByQuery(String schema, String tableName, QueryWrapper queryWrapper) {
return execute(mapper -> mapper.selectMapByQuery(schema, tableName, queryWrapper)); return execute(mapper -> mapper.selectFirstAndSecondColumnsAsMapByQuery(schema, tableName, queryWrapper));
} }
public Map selectMap(String sql, Object... args) { public Map selectFirstAndSecondColumnsAsMap(String sql, Object... args) {
return execute(mapper -> mapper.selectMap(sql, args)); return execute(mapper -> mapper.selectFirstAndSecondColumnsAsMap(sql, args));
} }
public Object selectObjectByQuery(String schema, String tableName, QueryWrapper queryWrapper) { public Object selectObjectByQuery(String schema, String tableName, QueryWrapper queryWrapper) {
return execute(mapper -> mapper.selectObjectByQuery(schema, tableName, queryWrapper)); return execute(mapper -> mapper.selectObjectByQuery(schema, tableName, queryWrapper));

View File

@ -74,8 +74,8 @@ public class DbTest {
@Test @Test
public void test02() { public void test02() {
Map map = Db.selectMap(QueryWrapper.create().from(tb_account)); Map map = Db.selectFirstAndSecondColumnsAsMap(QueryWrapper.create().from(tb_account));
Map map2 = Db.selectMap("select * from tb_account"); Map map2 = Db.selectFirstAndSecondColumnsAsMap("select * from tb_account");
System.out.println(map); System.out.println(map);
System.out.println(map2); System.out.println(map2);
Assert.assertEquals(map,map2); Assert.assertEquals(map,map2);