由于需要用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