由于需要用mongodb
緩存數據,所以自己寫了一套公共的存放和讀取方法
具體如下:
存放mongodb:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
/** * 公共方法:設置object類型緩存 * @author shijing * @param param * @param sysguid */ public void setobjdata(map<string,object> param, string sysguid, string enumbpd){ dbobject dbobject = new basicdbobject(); dbobject.putall(param); string collectionname = enumbpd.getbpdtype(enumbpd) + sysguid; mongodao.inserttocol(dbobject,collectionname); } /** * 公共方法:設置list緩存 * @author shijing * @param paramlist * @param sysguid */ public void setlistdata(list<map<string,object>> paramlist, string sysguid, string enumbpd){ list<dbobject> list = new arraylist<>(); if (collectionutils.isnotnull(paramlist)){ for (map<string,object> param : paramlist){ dbobject dbobject = new basicdbobject(); dbobject.putall(param); list.add(dbobject); } } string collectionname = enumbpd.getbpdtype(enumbpd) + sysguid; mongodao.inserttocol(list,collectionname); |
mongodao里面的方法:
1
2
3
4
5
6
7
8
9
10
|
public void inserttocol(dbobject document, string collectionname) { dropcol(collectionname); dbcollection dbcollection = mongotemplate.createcollection(collectionname); dbcollection.insert(document); } public void inserttocol(list<dbobject> documents, string collectionname) { dropcol(collectionname); dbcollection dbcollection = mongotemplate.createcollection(collectionname); dbcollection.insert(documents); } |
讀取方法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
|
/** * 通過關鍵字模糊查詢問題和答案庫 * @param param * @return */ @override public list<map<string, object>> searchquestionandanswerbykeyword(map<string, object> param) { list<map<string,object>> searchlist = new arraylist<>(); map<string,object> userinfo = sessionutils.getuserinfo(); string sysguid = userinfo.get( "sys_guid" ).tostring(); string collectionname = enumbpd.getbpdtype(enumbpd.help_page_list.gettype())+sysguid; //注釋里面這種方式雖然能模糊查詢,但是容易漏掉數據,切記切記!!! //pattern pattern = pattern.compile("^.*" + param.get("keyword") +".*$", pattern.case_insensitive); basicdbobject query= new basicdbobject(); //模糊查詢的字段設置 query.put( "page_html" , pattern.compile((string) param.get( "keyword" ))); dbcursor dbcursor = mongodao.findall(query,collectionname); list<dbobject> list = dbcursor.toarray(); for (dbobject dbobject: list){ searchlist.add(dbobject.tomap()); } //模糊查到的數據進行組裝 return getquestionandanswerlist(searchlist); } /** * 公共方法:批量—— in方法查詢list數據 * @author shijing * @param ids id集合 * @param parammap 其他參數 * @param columnname in字段列名 * @param collectionname 表名 * @return */ @override public list<map<string, object>> batchsearchpagelistbyids(list<string> ids, map<string, object> parammap, string columnname, string collectionname) { list<map<string,object>> searchlist = new arraylist<>(); basicdbobject query= new basicdbobject(); //批量查詢,in if (collectionutils.isnotempty(ids)){ basicdblist values = new basicdblist(); values.addall(ids); query.put(columnname, new basicdbobject( "$in" ,values)); } //拼接參數 if (maputils.isnotempty(parammap)){ for (string mapkey: parammap.keyset()){ query.put(mapkey, parammap.get(mapkey)); } } dbcursor dbcursor = mongodao.findall(query,collectionname); list<dbobject> list = dbcursor.toarray(); if (dbcursor!= null && dbcursor.size()> 0 ){ for (dbobject dbobject: list){ searchlist.add(dbobject.tomap()); } } return searchlist; } /** * 公共方法:通過參數獲取list數據 * @author shijing * @param parammap 參數 * @param collectionname 表名 * @return */ @override public list<map<string, object>> getlistbyparam(map<string, object> parammap,string collectionname){ list<map<string,object>> searchlist = new arraylist<>(); basicdbobject query= new basicdbobject(); //拼接參數 if (maputils.isnotempty(parammap)){ for (string mapkey: parammap.keyset()){ query.put(mapkey, parammap.get(mapkey)); } } dbcursor dbcursor = mongodao.findall(query,collectionname); list<dbobject> list = dbcursor.toarray(); if (dbcursor!= null && dbcursor.size()> 0 ){ for (dbobject dbobject: list){ searchlist.add(dbobject.tomap()); } } return searchlist; } /** * 公共方法:通過參數獲取object數據 * @author shijing * @param parammap * @param collectionname 表名 * @return */ @override public map<string, object> getobjectbyparam(map<string, object> parammap, string collectionname) { map<string,object> websiteinfo = new hashmap<>(); basicdbobject query= new basicdbobject(); //拼接參數 if (maputils.isnotempty(parammap)){ for (string mapkey: parammap.keyset()){ query.put(mapkey, parammap.get(mapkey)); } } dbobject dbobject = mongodao.findone(query,collectionname); if (dbobject!= null ){ return dbobject.tomap(); } return websiteinfo; } |
注意事項:
mongodb模糊查詢時
1
|
pattern pattern = pattern.compile( "^.*" + param.get( "keyword" ) + ".*$" |
這種方式存在bug, 容易漏掉數據
應該使用下面這種方式:
1
|
query.put( "page_html" , pattern.compile((string) param.get( "keyword" ))); |
先記錄到這吧,有需要在補充,批量in方法也在上述代碼里面。
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對服務器之家的支持。如果你想了解更多相關內容請查看下面相關鏈接
原文鏈接:https://blog.csdn.net/moneyshi/article/details/81567819