MongoDBDao 工具类

工具类
public class MongoDBDao {
    /**
     * 获取MONGODB客户端实例
     *
     * @return
     * @throws Exception
     */
    public static MongoClient getMongoClient() throws Exception {
        try {
            // 解密用密钥
            String sKey = SysPropertyJdbc.getProperty("jdbc.deskey")
                    .substring(4, 28);

            String sIp = DESUtil.decryptMode(sKey,
                    MongoDBProperty.getProperty("mip"));
            int iPort = Integer.valueOf(DESUtil.decryptMode(sKey,
                    MongoDBProperty.getProperty("mport")));
            String sUser = DESUtil.decryptMode(sKey,
                    MongoDBProperty.getProperty("muser"));
            String sPasword = DESUtil.decryptMode(sKey,
                    MongoDBProperty.getProperty("mpassword"));
            String sDbNm = DESUtil.decryptMode(sKey,
                    MongoDBProperty.getProperty("mdb"));

            // ===================================================//
            List<ServerAddress> serverList = new ArrayList<ServerAddress>();
            serverList.add(new ServerAddress(sIp, iPort));
            // ===================================================//
            List<MongoCredential> mcList = new ArrayList<MongoCredential>();
            mcList.add(MongoCredential.createCredential(sUser, sDbNm,
                    sPasword.toCharArray()));
            // ===================================================//
            MongoClientOptions.Builder builder = MongoClientOptions.builder();
            // 与目标数据库能够建立的最大connection数量为50
            builder.connectionsPerHost(50);
            // 如果当前所的connection都在使用中,则每个connection上可以50个线程排队等待
            builder.threadsAllowedToBlockForConnectionMultiplier(50);
            // 一个线程访问数据库的时候,在成功获取到一个可用数据库连接之前的最长等待时间为2分钟
            // 这里比较危险,如果超过maxWaitTime都没获取到这个连接的话,该线程就会抛出Exception
            // 故这里设置的maxWaitTime应该足够大,以免由于排队线程过多造成的数据库访问失败
            builder.maxWaitTime(1000 * 60 * 2);
            // 与数据库建立连接的timeout设置为1分钟
            builder.connectTimeout(1000 * 60 * 1);
            // ===================================================//
            MongoClientOptions mco = builder.build();
            return new MongoClient(serverList, mcList, mco);
        } catch (Exception e) {
            throw e;
        }
    }
}

操作类
logger.debug("START...");
        int page = 0;// 滚动加载页码
        int page10 = 0;
        if (this.getPara("pagetimer") != null) {
            page = Integer.parseInt(this.getPara("pagetimer"));// 滚动加载页码
            page10 = page * 10;
        }
        String umac = this.getPara("umac");
        Calendar c = Calendar.getInstance();
        c.add(Calendar.MONTH, -1);
        // System.out.println(c.getTime()); 上个月时间
        MongoDBDao mongoDBDao = new MongoDBDao();
        MongoClient mongoClient = mongoDBDao.getMongoClient();
        MongoDatabase database = mongoClient
                .getDatabase(DESUtil.decryptMode(SysPropertyJdbc.getProperty("jdbc.deskey").substring(4, 28), MongoDBProperty.getProperty("mdb")));
        MongoCollection<Document> collection = database.getCollection("user_timeline");
        // 查询条件
        MongoCursor<Document> mongoCursor = collection.find(Filters.and(Filters.eq("umac", umac), Filters.gt("datetime", c.getTime()))).skip(page10)
                .limit(10).iterator();
        String timerShaft = "";// 返回显示项
        while (mongoCursor.hasNext()) {
            Iterator<Entry<String, Object>> iter = mongoCursor.next().entrySet().iterator();
            Date datetime = null;
            String host = "";
            String resultdate = "";
            while (iter.hasNext()) {
                Entry eTmp = iter.next();
                String sKeyTmp = eTmp.getKey().toString();
                switch (sKeyTmp) {
                case "datetime":
                    datetime = (Date) eTmp.getValue();
                    break;
                case "host":
                    host = eTmp.getValue().toString();
                    break;
                default:
                    break;
                }
                if (datetime != null) {
                    resultdate = dateDeal(datetime);
                }
            }
            timerShaft = timerShaft + "<li><div class=\"animationTime\">" + resultdate + "</div><div class=\"animationTimeN\">" + host
                    + "</div></li>";
        }
        this.setAttr("pagetimer", page);
        this.setAttr("timerShaft", timerShaft);

工具类
public class SysPropertyJdbc {
    /**
     * 初期化
     */
    private SysPropertyJdbc() throws Exception {
        this.props = new Properties();
        props.load(this.getClass().getClassLoader()
                .getResourceAsStream(PROPS_NAME));
    }
    private static final String PROPS_NAME = "jdbc.properties";
    private static SysPropertyJdbc sysProps;
    private Properties props;
    public static String getProperty(String key) throws Exception {
        return SysPropertyJdbc.getInstance().getProperties().getProperty(key);
    }
    private Properties getProperties() {
        return this.props;
    }
    private static synchronized SysPropertyJdbc getInstance() throws Exception {
        if (sysProps == null) {
            sysProps = new SysPropertyJdbc();
        }
        return sysProps;
    }
}

public class MongoDBProperty {
    private MongoDBProperty() throws Exception {
        this.props = new Properties();
        props.load(this.getClass().getClassLoader()
                .getResourceAsStream(PROPS_NAME));
    }
    private static final String PROPS_NAME = "mongodb.properties";
    private static MongoDBProperty sysProps;
    private Properties props;
    public static String getProperty(String key) throws Exception {
        return MongoDBProperty.getInstance().getProperties().getProperty(key);
    }
    private Properties getProperties() {
        return this.props;
    }
    private static synchronized MongoDBProperty getInstance() throws Exception {
        if (sysProps == null) {
            sysProps = new MongoDBProperty();
        }
        return sysProps;
    }
}

#mongodb.properties
mip=D9iw8GElYiWgjBrhRZgTRQ==
mport=3YtpA2QmgVM=
muser=RiT52btdOdCcVP34zzX6Xg==
mpassword=HjCIDeJQfMmo9w1ghPC+UPiE88wPzOLh
mdb=SiO7ZySzZh3l2G2+OCVjMw==

时间: 2024-12-22 04:43:17

MongoDBDao 工具类的相关文章

Arrays工具类

Arraysd的静态方法能够方便的对数组进行操作,每个方法也加了注释 : 程序: import java.util.*;public class Array{        public static void main(String[] args){                int[]  arr={1,3,4,2};                System.out.println("排序前:");                printArray(arr);//打印原数组

常用工具类(System,Runtime,Date,Calendar,Math)

一.Sy 一个java.lang包中的静态工具类. 三大字段: static PrintStream err "标准"错误输出流. static InputStream in "标准"输入流. static PrintStream out "标准"输出流. 其他常用方法: 描述系统信息: 获取系统属性信息: static Properties getProperties(): (Properties是Hashtable的子类,也就是Map 的子类

iOS 中的正则匹配(工具类)

正则表达式 正则表达式是对字符串操作的一种逻辑公式, 用事先定义好的一些特定字符.及这些特定字符的组合, 组成一个"规则字符串", 这个"规则字符串"用来表达对字符串的一种过滤逻辑, 正则表达式就是用于描述这些规则的工具, 或者说, 正则表达式就是记录文本规则的代码. 在开发中, 我们经常会有查找符合某些复杂规则的字符串的需要, 比如数据校验: 判断用户的输入是否合法(如:用户注册的时候,QQ号码,电话号码,邮箱是否符合要求) 下面让我们先来看看正则匹配常用的一些字

(九十五)音效播放方法和工具类的制作

音效通过AVFoundation框架实现,是通过函数而不是方法,因此需要进行桥接等操作,具体步骤如下. 进行音效播放,首先要得到音效的URL(只能是本地音频),然后转换为音效ID(唯一),通过ID播放音效. [音效播放方法] ①导入框架主头文件 #import <AVFoundation/AVFoundation.h> ②通过Bundle拿到本地音效,然后调用AudioServicesCreateSystemSoundID函数得到音效ID,ID为0代表无效,以此为依据可进行懒加载 @inter

spring endpoint工具类

工具类代码 @Controller public class EndpointDocController {     private final RequestMappingHandlerMapping handlerMapping;     @Autowired     public EndpointDocController(RequestMappingHandlerMapping handlerMapping) {         this.handlerMapping = handler

web常用的工具类总结

数据库的链接的操作类 package utils; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class DBConnection { private static final String DBDRIVER = "com.m

字符串工具类(指定字符串的长度和判断是否为空等方法)

package com.sec.util; /** * 字符串工具类 * @author Administrator * */public class StringUtil { /** * 过滤<,>,\n 字符串的方法 * @param input * @return */ public static String filterHTML(String input){ if(input == null || input.length() == 0){ return input; } input

java并发的艺术-读书笔记-第八章常用的并发工具类

jdk中提供了几个非常有用的工具类,分别是CountDownLatch,CyclicBarrier和semaphore exchanger CountDownLatch:允许一个或者多个线程等待其他线程完成操作 public class CountDownLatchTest{ static CountDownLatch c = new CountDownLatch(2); public static void main(String[] args){ new Thread(new Runnabl

java分页的实现(后台工具类和前台jsp页面)

1.首先,新建一个类Page.java 1 public class Page implements Serializable { 2 private static final long serialVersionUID = -3198048449643774660L; 3 private int pageNow = 1; // 当前页数 4 private int pageSize = 10; // 每页显示记录的条数 5 private int totalCount; // 总记录条数 6