1. Mybatis 查詢的結果集,列的順序如何去控制
1.直接執行前端傳來的任何sql語句,parameterType="String",
2.對於任何sql語句,其返回值類型無法用resultMap在xml文件里配置或者返回具體的bean類型,因此設置resultType="java.util.Map",但是Map並不保證存入取出順序一致,
因此設置resultType="java.util.LinkedHashMap",為保證查詢的欄位值有序(存入與取出順序一致)所以採用LinkedHashMap。
3.當返回值為LinkedHashMap時,表中存儲的null值並不會存入Map中,因此還要在mybatis配置文件中增加如下配置:
<settings>
<setting name="callSettersOnNulls" value="true"/>
</settings>
2. 要查詢很多個訂單,每個訂單里有很多個商品,應該怎麼處理,查詢結果是放在Map還是List里,應該怎麼放
首先你的訂單表是怎麼設計的。
商品表肯定是商品id,商品名稱等信息,絕對不會有訂單id在商品表。
訂單表有這樣的設計方式,訂單id,商品id。唯一值肯定不是訂單id,可以設置為自增列。一行數據只放一個商品id。相當於一個訂單id有多行數據。
那這樣就很簡單了。
你點擊某個訂單查看裡面詳情的時候,點擊事件傳的肯定是訂單id。然後在訂單表裡面加where條件,把該訂單所有數據查找出來,然後在關聯商品表,例如下面sql:
select * from dingdan dd
left join shangpin sp on sp.商品id=dd.商品id
where dingdanID='訂單號1'
至於你要把這個sql結果集放到什麼裡面,list,還是dataset,還是datatable就由你決定了。
3. Map 類型
Map集合:該集合存儲鍵值對。一對一對往裡存。而且要保證鍵的唯一性。
1,添加。 put(K key, V value)
putAll(Map<? extends K,? extends V> m)
2,刪除。 clear()
remove(Object key)
3,判斷。 containsValue(Object value) containsKey(Object key)
isEmpty()
4,獲取。 get(Object key) size() values()
entrySet()
keySet()
Map
|--Hashtable:底層是哈希表數據結構,不可以存入null
鍵null值。該集合是線程同步的。jdk1.0.效率低。
|--HashMap:底層是哈希表數據結構,允許使用 null 值
和 null 鍵,該集合是不同步的。將hashtable替代,jdk1.2.效率高。
|--TreeMap:底層是二叉樹數據結構。線程不同步。可
以用於給map集合中的鍵進行排序。和Set很像。其實大家,Set底層就是使用了Map集合。 map集合的兩種取出方式:
1,Set<k>keySet:將map中所有的鍵存入到Set集合。因為set具備迭代器。
所有可以迭代方式取出所有的鍵,在根據get方法。獲取
每一個鍵對應的值。
Map集合的取出原理:將map集合轉成set集合。在通
過迭代器取出。 importjava.util.*;
class MapDemo2 {
public static void main(String[] args)
{
Map<String,String> map = new
HashMap<String,String>();
map.put("02","zhangsan2"); map.put("03","zhangsan3"); map.put("01","zhangsan1");
map.put("04","zhangsan4");
/* //先獲取map集合的所有鍵的Set集合,keySet();
Set<String>keySet = map.keySet(); //有了Set集合。就可以獲取其迭代器。
Iterator<String> it = keySet.iterator();
while(it.hasNext()) {
String key = it.next();
//有了鍵可以通過map集合的get方法獲取其對應的值。 String value =map.get(key);
System.out.println("key:"+key+",value:"+value);
}
2,Set<Map.Entry<k,v>>entrySet:將map集合中的映射關系存入到了set集合中,而這個關系的數據類型就是:Map.Entry.
Entry其實就是Map中的一個static內部介面。
為什麼要定義在內部呢?
因為只有有了Map集合,有了鍵值對,才會有鍵值的映射關系。
關系屬於Map集合中的一個內部事物。
而且該事物在直接訪問Map集合中的元素。
//將Map集合中的映射關系取出。存入到Set集合中。
4. sql查詢出來的內容存入map,然後把他們遍歷出來
Sql語句查詢出來,然後用戶名存到map的key里,value里放一個user的實體類。
最後用entry遍歷map就好了
5. SSH框架,執行這一句SQL,結果集怎麼處理啊求解。
這樣的結果集用List<Object[]>接收就可以。
遍歷list集合,然後每條記錄的date,sales就是Object[]數組。
0是date,1是sales。
6. ibatis map 順序
你那樣取出來的應該是一個list中包含的map鍵值對吧 ,你可已迭代list中的map 通過列的名字作為鍵來取值啊
7. 請教高手:java中 SQL查詢結果返回為List<Map<String,Object>>結果集順序問題
List<Map<String,Object>> list=..
for (int i=0;i<list.size(),i++)
{
Map map=(Map)list.get(i);
Iterator iterator = map.keySet().iterator();
while (iterator.hasNext())
{
String key = (String) iterator.next();
Object object = map.get(key);
}
}
8. 怎麼把資料庫查詢的結果保存到map中
1、首先初始化一個map,然後按照代碼依次列印Map的數據。
9. sql查詢結果集resultset 轉map好 還是轉List好優缺點或步驟
您好,我來為您解答:
private static List convertList(ResultSet rs) throws SQLException {
List list = new ArrayList();
ResultSetMetaData md = rs.getMetaData();
int columnCount = md.getColumnCount(); //Map rowData;
while (rs.next()) { //rowData = new HashMap(columnCount);
Map rowData = new HashMap();
for (int i = 1; i <= columnCount; i++) {
rowData.put(md.getColumnName(i), rs.getObject(i));
}
list.add(rowData);
} return list;
}
轉載,僅供參考。
如果我的回答沒能幫助您,請繼續追問。
10. ibatis排序結果和 sql排序結果不一致
resultClass是User,如果你sql語句查詢出來的結果集合大於1,那豈不是會有問題(可以返回一個Map,你自己必須要定義)
parameterClass="String"極端情況下,你的name和password都有值的話,你該咋辦?如果說name和password都為空呢 ,最後的sql=select * from huser where 這又該怎麼執行呢?
所以 如luoting2762所說,where 1=1 比較穩妥。
id=selectUserByNameAndPwd的標簽,你可以傳遞一個Map參數過來(默認不用寫) ,或者傳遞一個對象過來也可以。