mirror of
https://gitee.com/mybatis-flex/mybatis-flex.git
synced 2025-12-07 00:58:24 +08:00
Db.selectMap 支持(查询结果的第一列作为key,第二列作为value)
This commit is contained in:
parent
944e04eeac
commit
f7f3295058
@ -290,9 +290,21 @@ 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) {
|
||||||
DefaultResultHandler defaultResultHandler = new DefaultResultHandler(objectFactory);
|
if(resultMap.getId().startsWith("com.mybatisflex.core.row.RowMapper.selectMap")){
|
||||||
handleRowValues(rsw, resultMap, defaultResultHandler, rowBounds, null);
|
ResultSet resultSet = rsw.getResultSet();
|
||||||
multipleResults.add(defaultResultHandler.getResultList());
|
skipRows(resultSet, rowBounds);
|
||||||
|
Map<Object,Object> row = new HashMap<>();
|
||||||
|
while (!resultSet.isClosed() && resultSet.next()) {
|
||||||
|
row.put(resultSet.getObject(1),resultSet.getObject(2));
|
||||||
|
}
|
||||||
|
List<Map<Object,Object>> mapArrayList = new ArrayList<>(1);
|
||||||
|
mapArrayList.add(row);
|
||||||
|
multipleResults.add(mapArrayList);
|
||||||
|
}else {
|
||||||
|
DefaultResultHandler defaultResultHandler = new DefaultResultHandler(objectFactory);
|
||||||
|
handleRowValues(rsw, resultMap, defaultResultHandler, rowBounds, null);
|
||||||
|
multipleResults.add(defaultResultHandler.getResultList());
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
handleRowValues(rsw, resultMap, resultHandler, rowBounds, null);
|
handleRowValues(rsw, resultMap, resultHandler, rowBounds, null);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -854,6 +854,48 @@ public class Db {
|
|||||||
return invoker().selectObjectByQuery(null, null, queryWrapper);
|
return invoker().selectObjectByQuery(null, null, queryWrapper);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据 queryWrapper 查询内容,数据返回为Map 第一列的值作为key 第二列的值作为value
|
||||||
|
*
|
||||||
|
* @param queryWrapper query 封装
|
||||||
|
* @return 数据内容
|
||||||
|
*/
|
||||||
|
public static Map selectMap(QueryWrapper queryWrapper) {
|
||||||
|
return invoker().selectMapByQuery(null, null, queryWrapper);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询某个内容,数据返回为Map 第一列的值作为key 第二列的值作为value
|
||||||
|
*
|
||||||
|
* @param sql sql 内容
|
||||||
|
* @param args sql 参数
|
||||||
|
*/
|
||||||
|
public static Map selectMap(String sql, Object... args) {
|
||||||
|
return invoker().selectMap(sql, args);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据 queryWrapper 查询内容,数据返回为Map 第一列的值作为key 第二列的值作为value
|
||||||
|
*
|
||||||
|
* @param schema 模式
|
||||||
|
* @param tableName 表名
|
||||||
|
* @param queryWrapper query 封装
|
||||||
|
* @return 数据内容
|
||||||
|
*/
|
||||||
|
public static Map selectMap(String schema, String tableName, QueryWrapper queryWrapper) {
|
||||||
|
return invoker().selectMapByQuery(schema, tableName, queryWrapper);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据 queryWrapper 查询内容,数据返回为Map 第一列的值作为key 第二列的值作为value
|
||||||
|
*
|
||||||
|
* @param tableName 表名
|
||||||
|
* @param queryWrapper query 封装
|
||||||
|
* @return 数据内容
|
||||||
|
*/
|
||||||
|
public static Map selectMap(String tableName, QueryWrapper queryWrapper) {
|
||||||
|
return invoker().selectMapByQuery(null, tableName, queryWrapper);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询某列内容,数据返回应该有 多行 1 列
|
* 查询某列内容,数据返回应该有 多行 1 列
|
||||||
|
|||||||
@ -327,6 +327,12 @@ public interface RowMapper {
|
|||||||
Object selectObject(@Param(FlexConsts.SQL) String sql, @Param(FlexConsts.SQL_ARGS) Object... args);
|
Object selectObject(@Param(FlexConsts.SQL) String sql, @Param(FlexConsts.SQL_ARGS) Object... args);
|
||||||
|
|
||||||
|
|
||||||
|
@SelectProvider(value = RowSqlProvider.class, method = RowSqlProvider.METHOD_RAW_SQL)
|
||||||
|
Map selectMap(@Param(FlexConsts.SQL) String sql, @Param(FlexConsts.SQL_ARGS) Object... args);
|
||||||
|
|
||||||
|
@SelectProvider(type = RowSqlProvider.class, method = "selectListByQuery")
|
||||||
|
Map selectMapByQuery(@Param(FlexConsts.SCHEMA_NAME) String schema
|
||||||
|
, @Param(FlexConsts.TABLE_NAME) String tableName, @Param(FlexConsts.QUERY) QueryWrapper queryWrapper);
|
||||||
/**
|
/**
|
||||||
* 通过 sql 查询多行数据,sql 执行的结果应该只有 1 列
|
* 通过 sql 查询多行数据,sql 执行的结果应该只有 1 列
|
||||||
*
|
*
|
||||||
|
|||||||
@ -24,6 +24,7 @@ import org.apache.ibatis.session.SqlSessionFactory;
|
|||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.function.BiConsumer;
|
import java.util.function.BiConsumer;
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
|
|
||||||
@ -188,7 +189,12 @@ 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) {
|
||||||
|
return execute(mapper -> mapper.selectMapByQuery(schema, tableName, queryWrapper));
|
||||||
|
}
|
||||||
|
public Map selectMap(String sql, Object... args) {
|
||||||
|
return execute(mapper -> mapper.selectMap(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));
|
||||||
}
|
}
|
||||||
|
|||||||
@ -17,6 +17,7 @@
|
|||||||
package com.mybatisflex.test;
|
package com.mybatisflex.test;
|
||||||
|
|
||||||
import com.mybatisflex.core.MybatisFlexBootstrap;
|
import com.mybatisflex.core.MybatisFlexBootstrap;
|
||||||
|
import com.mybatisflex.core.query.QueryWrapper;
|
||||||
import com.mybatisflex.core.row.Db;
|
import com.mybatisflex.core.row.Db;
|
||||||
import com.mybatisflex.core.row.Row;
|
import com.mybatisflex.core.row.Row;
|
||||||
import org.apache.ibatis.session.Configuration;
|
import org.apache.ibatis.session.Configuration;
|
||||||
@ -28,6 +29,7 @@ import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType;
|
|||||||
|
|
||||||
import javax.sql.DataSource;
|
import javax.sql.DataSource;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author 王帅
|
* @author 王帅
|
||||||
@ -70,4 +72,13 @@ public class DbTest {
|
|||||||
.forEach(Assert::assertNull);
|
.forEach(Assert::assertNull);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void test02() {
|
||||||
|
Map map = Db.selectMap(QueryWrapper.create().from(tb_account));
|
||||||
|
Map map2 = Db.selectMap("select * from tb_account");
|
||||||
|
System.out.println(map);
|
||||||
|
System.out.println(map2);
|
||||||
|
Assert.assertEquals(map,map2);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user