2 Commits c636199a7e ... f72c5e45b8

Autore SHA1 Messaggio Data
  miaozy f72c5e45b8 ipu-nosql使用范例 5 anni fa
  miaozy 4a2bccc243 引入ipu-nosql组件 5 anni fa

+ 11 - 0
ipu-rest-scaffold/pom.xml

@ -31,6 +31,7 @@
31 31
    <properties>
32 32
        <start-class>com.ai.ipu.server.RestScaffoldStart</start-class>
33 33
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
34
        <mongo.java.driver>3.11.2</mongo.java.driver>
34 35
        <ipu>3.1-SNAPSHOT</ipu>
35 36
    </properties>
36 37
@ -46,6 +47,16 @@
46 47
        	<groupId>com.ai.ipu.server</groupId>
47 48
        	<artifactId>ipu-restful</artifactId>
48 49
        </dependency>
50
        <dependency>
51
            <groupId>com.ai.ipu</groupId>
52
            <artifactId>ipu-nosql</artifactId>
53
            <version>0.0.1-SNAPSHOT</version>
54
        </dependency>
55
        <dependency>
56
            <groupId>org.mongodb</groupId>
57
            <artifactId>mongo-java-driver</artifactId>
58
            <version>${mongo.java.driver}</version>
59
        </dependency>
49 60
    </dependencies>
50 61
51 62
    <build>

+ 44 - 0
ipu-rest-scaffold/src/main/java/com/ai/ipu/server/control/MongoDbController.java

@ -0,0 +1,44 @@
1
package com.ai.ipu.server.control;
2
3
import com.ai.ipu.data.JMap;
4
import com.ai.ipu.server.service.MongoDbService;
5
import org.springframework.beans.factory.annotation.Autowired;
6
import org.springframework.stereotype.Controller;
7
import org.springframework.web.bind.annotation.*;
8
9
/**
10
 * @author miaozy@asiainfo.com
11
 * @desc mongodb使用范例
12
 */
13
@Controller
14
@RequestMapping("/mongodb")
15
public class MongoDbController {
16
17
    @Autowired
18
    MongoDbService MongoDbService;
19
20
    @ResponseBody
21
    @RequestMapping("/select")
22
    public JMap executeSelect(JMap params) throws Exception{
23
        return MongoDbService.executeSelect(params);
24
    }
25
26
    @ResponseBody
27
    @RequestMapping("/insert")
28
    public JMap executeInsert(JMap params) throws Exception{
29
        return  MongoDbService.processInsert(params);
30
    }
31
32
    @ResponseBody
33
    @RequestMapping("/update")
34
    public JMap executeUpdate(JMap params) throws Exception{
35
        return  MongoDbService.processUpdate(params);
36
    }
37
38
    @ResponseBody
39
    @RequestMapping("/delete")
40
    public JMap executeDelete(JMap params) throws Exception{
41
        return MongoDbService.processDelete(params);
42
    }
43
44
}

+ 14 - 0
ipu-rest-scaffold/src/main/java/com/ai/ipu/server/service/MongoDbService.java

@ -0,0 +1,14 @@
1
package com.ai.ipu.server.service;
2
3
import com.ai.ipu.data.JMap;
4
5
public interface MongoDbService {
6
7
    JMap executeSelect(JMap params) throws Exception;
8
9
    JMap processInsert(JMap params) throws Exception;
10
11
    JMap processUpdate(JMap params) throws Exception;
12
13
    JMap processDelete(JMap params) throws Exception;
14
}

+ 69 - 0
ipu-rest-scaffold/src/main/java/com/ai/ipu/server/service/impl/MongoDbServiceImpl.java

@ -0,0 +1,69 @@
1
package com.ai.ipu.server.service.impl;
2
3
import com.ai.ipu.data.JMap;
4
import com.ai.ipu.nosql.INoSql;
5
import com.ai.ipu.nosql.mongodb.MongoCacheFactory;
6
import com.ai.ipu.server.service.MongoDbService;
7
import com.ai.ipu.server.util.RestScaffoldConstant;
8
import com.alibaba.fastjson.JSONObject;
9
import org.springframework.stereotype.Service;
10
11
import java.util.HashMap;
12
import java.util.List;
13
import java.util.Map;
14
15
@Service
16
public class MongoDbServiceImpl implements MongoDbService {
17
18
    private String connName = "data";
19
    private String dbName = "test";
20
    private String tableName = "mycol1";
21
22
    @Override
23
    public JMap executeSelect(JMap params) throws Exception {
24
        INoSql noSql = MongoCacheFactory.getMongoDao(connName, dbName, tableName);
25
        JSONObject condParam = new JSONObject();
26
        condParam.put("nickName", "tom");
27
        List<String> resultList = noSql.executeSelect(condParam.toJSONString(), "{}");
28
        params.put("retList",resultList);
29
        return params;
30
    }
31
32
    @Override
33
    public JMap processInsert(JMap params) throws Exception {
34
        INoSql noSql = MongoCacheFactory.getMongoDao(connName, dbName, tableName);
35
        JSONObject param = new JSONObject();
36
        param.put("name", "mongo");
37
        JSONObject data = new JSONObject();
38
        data.put("name", "mongo");
39
        data.put("age","6");
40
        data.put("nickName", "tom");
41
        Map info = new HashMap();
42
        info.put("ver", 5.0);
43
        data.put("info", info);
44
        noSql.executeInsert(data.toJSONString());
45
        return params;
46
    }
47
48
    @Override
49
    public JMap processUpdate(JMap params) throws Exception{
50
        INoSql noSql = MongoCacheFactory.getMongoDao(connName, dbName, tableName);
51
        JSONObject condParam = new JSONObject();
52
        condParam.put("nickName", "tom");
53
        JSONObject updateField = new JSONObject();
54
        updateField.put("name", "1256");
55
        updateField.put("age","11");
56
        updateField.put("info.ver",10.0);
57
        noSql.executeUpdateMany(condParam.toJSONString(), updateField.toJSONString());
58
        return params;
59
    }
60
61
    @Override
62
    public JMap processDelete(JMap params) throws Exception{
63
        INoSql noSql = MongoCacheFactory.getMongoDao(connName, dbName, tableName);
64
        JSONObject condParam = new JSONObject();
65
        condParam.put("nickName", "tom");
66
        noSql.executeDeleteMany(condParam.toJSONString());
67
        return params;
68
    }
69
}

+ 69 - 0
ipu-rest-scaffold/src/main/resources/dev/ipu-nosql.xml

@ -0,0 +1,69 @@
1
<?xml version = '1.0' encoding = 'UTF-8'?>
2
<connections>
3
    <connection name="data" type="mongo">
4
        <servers>
5
            <server ip="10.1.236.121" port="11000" />
6
            <server ip="10.1.236.121" port="11010" />
7
            <server ip="10.1.236.121" port="11020" />
8
        </servers>
9
        <!-- 连接时数据库名,不做身份验证时可空;身份认证时必填 -->
10
        <config name="authSource" value="admin"/>
11
        <!-- 认证机制,不做身份验证时可空;身份认证时必填。mongo3.0及更高版本缺省是SCRAM-SHA-1 -->
12
        <!-- mongo2.6以前缺省是MONGODB-CR, mongo4.0及更高版本已经不再支持-->
13
        <!-- 支持SCRAM-SHA-1、SCRAM-SHA-256-->
14
        <!-- 当前组件不支持x.509证书 -->
15
        <config name="authMechanism" value="SCRAM-SHA-256"/>
16
        <!-- 用户名,不做身份验证时可空;身份认证时必填 -->
17
        <config name="userName" value="ipuOper"/>
18
        <!-- 加密后的用户密码,不做身份验证时可空;身份认证时必填 -->
19
        <!-- 加密算法需要用一对@@包含,并且放在密码的最前面。如果没有发现加密算法,则为明文密码  -->
20
        <config name="encryptedPasswd" value="@DES@cMBWCqZgG39bQ+PyRkJ4sw=="/>
21
        <!-- 解密秘钥 ,可为空 -->
22
        <config name="decryptedKey" value="325m@#$rt4vt"/>
23
        <!-- 自定义解密算法需要在pom.xml里引入所需jar,并在此声明带全包名的类 -->
24
        <config name="decryptedClass" value="com.ai.ipu.nosql.util.DecryptUtil"/>
25
        <!-- 自定义解密算法的解密算法,加密后的秘钥(可为空,为空则只有1个参数)、密码串是算法的2个参数  -->
26
        <config name="decryptedMethod" value="decryptDES"/>
27
        <!-- 是否支持事务,true为支持,其他值为不支持 -->
28
        <config name="needTranscation" value="true"/>
29
        <!-- 复制集名称,可以为空 -->
30
        <config name="replicaSet" value="lpsa_repl"/>
31
        <!-- 客户端最大连接数,超过了将会被阻塞,默认100 -->
32
        <config name="connectionsPerHost" />
33
        <!-- 客户端最小连接数 -->
34
        <config name="minConnectionsPerHost" />
35
        <!-- 可被阻塞的线程数因子,默认值为5,如果connectionsPerHost配置为10, -->
36
        <!-- 那么最多能阻塞50个线程,超过50个之后就会收到一个异常  -->
37
        <config name="threadAllowedToBlockForConnectionMultiplier" />
38
        <!-- 阻塞线程获取连接的最长等待时间,默认120000 ms -->
39
        <config name="maxWaitTime" />
40
        <!-- 连接池连接最大空闲时间,默认为0 -->
41
        <config name="maxConnectionIdleTime" />
42
        <!-- 连接池连接的最大存活时间,默认为0 -->
43
        <config name="maxConnectionLifeTime" />
44
        <!-- 连接超时时间,默认值是0,就是不超时 -->
45
        <config name="connectTimeout" />
46
        <!-- 超时时间,默认值是0,就是不超时 -->
47
        <config name="socketTimeout" />
48
        <!-- 当没有手动关闭游标时,是否自动释放游标对象。默认为 true。-->
49
        <config name="cursorFinalizerEnabled" />
50
        <!-- MongoDB有5种ReadPreference模式 -->
51
        <!-- primary            主节点,默认模式,读操作只在主节点,如果主节点不可用,报错或者抛出异常。-->
52
        <!-- primaryPreferred   首选主节点,大多情况下读操作在主节点,如果主节点不可用,如故障转移,读操作在从节点。-->
53
        <!-- secondary          从节点,读操作只在从节点, 如果从节点不可用,报错或者抛出异常。-->
54
        <!-- secondaryPreferred 首选从节点,大多情况下读操作在从节点,特殊情况(如单主节点架构)读操作在主节点。-->
55
        <!-- nearest            最邻近节点,读操作在最邻近的成员,可能是主节点或者从节点-->
56
        <config name="readPreference" />
57
    </connection>
58
    
59
    <connection name="simple" type="mongo">
60
        <servers>
61
            <server ip="10.1.236.121" port="11000" />
62
            <server ip="10.1.236.121" port="11010" />
63
            <server ip="10.1.236.121" port="11020" />
64
        </servers>
65
        <!-- 复制集名称,可以为空 -->
66
        <config name="replicaSet" value="lpsa_repl"/>
67
    </connection>
68
69
</connections>

+ 8 - 5
ipu-rest-scaffold/src/main/resources/ipu-spring-mvc.xml

@ -1,14 +1,17 @@
1 1
<?xml version="1.0" encoding="UTF-8"?>
2 2
<beans xmlns="http://www.springframework.org/schema/beans"
3
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
4
	xmlns:context="http://www.springframework.org/schema/context"
5
	xmlns:mvc="http://www.springframework.org/schema/mvc"
6
	xsi:schemaLocation="http://www.springframework.org/schema/beans 
3
	   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4
	   xmlns:context="http://www.springframework.org/schema/context"
5
	   xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:aop="http://www.springframework.org/schema/aop"
6
	   xsi:schemaLocation="http://www.springframework.org/schema/beans
7 7
           http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
8 8
           http://www.springframework.org/schema/context  
9 9
        http://www.springframework.org/schema/context/spring-context-3.0.xsd
10 10
        http://www.springframework.org/schema/mvc
11
		http://www.springframework.org/schema/mvc/spring-mvc.xsd">
11
		http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">
12 12

13 13
    <context:component-scan base-package="com.ai.ipu.server" />
14
	<aop:aspectj-autoproxy proxy-target-class="true"/>
15
	<context:annotation-config />
16
	<bean id="transcationAspects" class="com.ai.ipu.nosql.aspect.TransactionAspect" />
14 17
</beans> 

+ 69 - 0
ipu-rest-scaffold/src/main/resources/pro/ipu-nosql.xml

@ -0,0 +1,69 @@
1
<?xml version = '1.0' encoding = 'UTF-8'?>
2
<connections>
3
    <connection name="data" type="mongo">
4
        <servers>
5
            <server ip="10.1.236.121" port="11000" />
6
            <server ip="10.1.236.121" port="11010" />
7
            <server ip="10.1.236.121" port="11020" />
8
        </servers>
9
        <!-- 连接时数据库名,不做身份验证时可空;身份认证时必填 -->
10
        <config name="authSource" value="admin"/>
11
        <!-- 认证机制,不做身份验证时可空;身份认证时必填。mongo3.0及更高版本缺省是SCRAM-SHA-1 -->
12
        <!-- mongo2.6以前缺省是MONGODB-CR, mongo4.0及更高版本已经不再支持-->
13
        <!-- 支持SCRAM-SHA-1、SCRAM-SHA-256-->
14
        <!-- 当前组件不支持x.509证书 -->
15
        <config name="authMechanism" value="SCRAM-SHA-256"/>
16
        <!-- 用户名,不做身份验证时可空;身份认证时必填 -->
17
        <config name="userName" value="ipuOper"/>
18
        <!-- 加密后的用户密码,不做身份验证时可空;身份认证时必填 -->
19
        <!-- 加密算法需要用一对@@包含,并且放在密码的最前面。如果没有发现加密算法,则为明文密码  -->
20
        <config name="encryptedPasswd" value="@DES@cMBWCqZgG39bQ+PyRkJ4sw=="/>
21
        <!-- 解密秘钥 ,可为空 -->
22
        <config name="decryptedKey" value="325m@#$rt4vt"/>
23
        <!-- 自定义解密算法需要在pom.xml里引入所需jar,并在此声明带全包名的类 -->
24
        <config name="decryptedClass" value="com.ai.ipu.nosql.util.DecryptUtil"/>
25
        <!-- 自定义解密算法的解密算法,加密后的秘钥(可为空,为空则只有1个参数)、密码串是算法的2个参数  -->
26
        <config name="decryptedMethod" value="decryptDES"/>
27
        <!-- 是否支持事务,true为支持,其他值为不支持 -->
28
        <config name="needTranscation" value="true"/>
29
        <!-- 复制集名称,可以为空 -->
30
        <config name="replicaSet" value="lpsa_repl"/>
31
        <!-- 客户端最大连接数,超过了将会被阻塞,默认100 -->
32
        <config name="connectionsPerHost" />
33
        <!-- 客户端最小连接数 -->
34
        <config name="minConnectionsPerHost" />
35
        <!-- 可被阻塞的线程数因子,默认值为5,如果connectionsPerHost配置为10, -->
36
        <!-- 那么最多能阻塞50个线程,超过50个之后就会收到一个异常  -->
37
        <config name="threadAllowedToBlockForConnectionMultiplier" />
38
        <!-- 阻塞线程获取连接的最长等待时间,默认120000 ms -->
39
        <config name="maxWaitTime" />
40
        <!-- 连接池连接最大空闲时间,默认为0 -->
41
        <config name="maxConnectionIdleTime" />
42
        <!-- 连接池连接的最大存活时间,默认为0 -->
43
        <config name="maxConnectionLifeTime" />
44
        <!-- 连接超时时间,默认值是0,就是不超时 -->
45
        <config name="connectTimeout" />
46
        <!-- 超时时间,默认值是0,就是不超时 -->
47
        <config name="socketTimeout" />
48
        <!-- 当没有手动关闭游标时,是否自动释放游标对象。默认为 true。-->
49
        <config name="cursorFinalizerEnabled" />
50
        <!-- MongoDB有5种ReadPreference模式 -->
51
        <!-- primary            主节点,默认模式,读操作只在主节点,如果主节点不可用,报错或者抛出异常。-->
52
        <!-- primaryPreferred   首选主节点,大多情况下读操作在主节点,如果主节点不可用,如故障转移,读操作在从节点。-->
53
        <!-- secondary          从节点,读操作只在从节点, 如果从节点不可用,报错或者抛出异常。-->
54
        <!-- secondaryPreferred 首选从节点,大多情况下读操作在从节点,特殊情况(如单主节点架构)读操作在主节点。-->
55
        <!-- nearest            最邻近节点,读操作在最邻近的成员,可能是主节点或者从节点-->
56
        <config name="readPreference" />
57
    </connection>
58
    
59
    <connection name="simple" type="mongo">
60
        <servers>
61
            <server ip="10.1.236.121" port="11000" />
62
            <server ip="10.1.236.121" port="11010" />
63
            <server ip="10.1.236.121" port="11020" />
64
        </servers>
65
        <!-- 复制集名称,可以为空 -->
66
        <config name="replicaSet" value="lpsa_repl"/>
67
    </connection>
68
69
</connections>

+ 69 - 0
ipu-rest-scaffold/src/main/resources/test/ipu-nosql.xml

@ -0,0 +1,69 @@
1
<?xml version = '1.0' encoding = 'UTF-8'?>
2
<connections>
3
    <connection name="data" type="mongo">
4
        <servers>
5
            <server ip="10.1.236.121" port="11000" />
6
            <server ip="10.1.236.121" port="11010" />
7
            <server ip="10.1.236.121" port="11020" />
8
        </servers>
9
        <!-- 连接时数据库名,不做身份验证时可空;身份认证时必填 -->
10
        <config name="authSource" value="admin"/>
11
        <!-- 认证机制,不做身份验证时可空;身份认证时必填。mongo3.0及更高版本缺省是SCRAM-SHA-1 -->
12
        <!-- mongo2.6以前缺省是MONGODB-CR, mongo4.0及更高版本已经不再支持-->
13
        <!-- 支持SCRAM-SHA-1、SCRAM-SHA-256-->
14
        <!-- 当前组件不支持x.509证书 -->
15
        <config name="authMechanism" value="SCRAM-SHA-256"/>
16
        <!-- 用户名,不做身份验证时可空;身份认证时必填 -->
17
        <config name="userName" value="ipuOper"/>
18
        <!-- 加密后的用户密码,不做身份验证时可空;身份认证时必填 -->
19
        <!-- 加密算法需要用一对@@包含,并且放在密码的最前面。如果没有发现加密算法,则为明文密码  -->
20
        <config name="encryptedPasswd" value="@DES@cMBWCqZgG39bQ+PyRkJ4sw=="/>
21
        <!-- 解密秘钥 ,可为空 -->
22
        <config name="decryptedKey" value="325m@#$rt4vt"/>
23
        <!-- 自定义解密算法需要在pom.xml里引入所需jar,并在此声明带全包名的类 -->
24
        <config name="decryptedClass" value="com.ai.ipu.nosql.util.DecryptUtil"/>
25
        <!-- 自定义解密算法的解密算法,加密后的秘钥(可为空,为空则只有1个参数)、密码串是算法的2个参数  -->
26
        <config name="decryptedMethod" value="decryptDES"/>
27
        <!-- 是否支持事务,true为支持,其他值为不支持 -->
28
        <config name="needTranscation" value="true"/>
29
        <!-- 复制集名称,可以为空 -->
30
        <config name="replicaSet" value="lpsa_repl"/>
31
        <!-- 客户端最大连接数,超过了将会被阻塞,默认100 -->
32
        <config name="connectionsPerHost" />
33
        <!-- 客户端最小连接数 -->
34
        <config name="minConnectionsPerHost" />
35
        <!-- 可被阻塞的线程数因子,默认值为5,如果connectionsPerHost配置为10, -->
36
        <!-- 那么最多能阻塞50个线程,超过50个之后就会收到一个异常  -->
37
        <config name="threadAllowedToBlockForConnectionMultiplier" />
38
        <!-- 阻塞线程获取连接的最长等待时间,默认120000 ms -->
39
        <config name="maxWaitTime" />
40
        <!-- 连接池连接最大空闲时间,默认为0 -->
41
        <config name="maxConnectionIdleTime" />
42
        <!-- 连接池连接的最大存活时间,默认为0 -->
43
        <config name="maxConnectionLifeTime" />
44
        <!-- 连接超时时间,默认值是0,就是不超时 -->
45
        <config name="connectTimeout" />
46
        <!-- 超时时间,默认值是0,就是不超时 -->
47
        <config name="socketTimeout" />
48
        <!-- 当没有手动关闭游标时,是否自动释放游标对象。默认为 true。-->
49
        <config name="cursorFinalizerEnabled" />
50
        <!-- MongoDB有5种ReadPreference模式 -->
51
        <!-- primary            主节点,默认模式,读操作只在主节点,如果主节点不可用,报错或者抛出异常。-->
52
        <!-- primaryPreferred   首选主节点,大多情况下读操作在主节点,如果主节点不可用,如故障转移,读操作在从节点。-->
53
        <!-- secondary          从节点,读操作只在从节点, 如果从节点不可用,报错或者抛出异常。-->
54
        <!-- secondaryPreferred 首选从节点,大多情况下读操作在从节点,特殊情况(如单主节点架构)读操作在主节点。-->
55
        <!-- nearest            最邻近节点,读操作在最邻近的成员,可能是主节点或者从节点-->
56
        <config name="readPreference" />
57
    </connection>
58
    
59
    <connection name="simple" type="mongo">
60
        <servers>
61
            <server ip="10.1.236.121" port="11000" />
62
            <server ip="10.1.236.121" port="11010" />
63
            <server ip="10.1.236.121" port="11020" />
64
        </servers>
65
        <!-- 复制集名称,可以为空 -->
66
        <config name="replicaSet" value="lpsa_repl"/>
67
    </connection>
68
69
</connections>