java分页封装到dao层,Node Dao层的封装与分页
传统的写法/**
* Created by 黄森 on 2017/7/22.
*/var express = require('express');var app = express();var MongoClient = require('mongodb').MongoClient;
app.get('/',function (req,res) { // Connection URL
var url = 'mongodb://localhost:27017/database';
MongoClient.connect(url, function(err, db) { if(err){ console.log("数据库连接失败")
} console.log("数据库连接成功"); //插入数据
db.collection('student').insertOne({ "name":"hahah", "age":"100"
},function (err,result) { console.log(result);
res.send("插入数据成功:"+result);
db.close();
});
});
});
app.listen(3000);
这样的话,我们可以看出用户在每次操作的时候,就要连接依次数据库,这样的话效率很低,所以我们把数据库的增删改查封装成一个 模块,这个模块命名为db.js
Dao层封装:db.js
1、引入mongodbvar MongoClient = require('mongodb').MongoClient;
2、连接数据库//连接数据路function _connectDB(callback) { // Connection URL
var url = 'mongodb://localhost:27017/database';
MongoClient.connect(url, function (err, db) { console.log("数据库连接成功"); if(err){
callback(err,null); return;
}
callback(err, db);
});
}
3、封装方法插入数据// 插入数据exports.insertOne = function (collectionName, json, callback) {
_connectDB(function (err, db) {
db.collection(collectionName).insertOne(json, function (err, result) {
callback(err, result);
db.close();
})
})
};查找数据// 查找数据exports.find = function (collectionName, json, callback) { var result = []; //返回结果的数组
if (arguments.length != 3) {
callback("find接受三个参数", null); return;
}
_connectDB(function (err, db) { var cursor = db.collection(collectionName).find(json);
cursor.each(function (err, doc) { if (err) {
callback(err, null);
db.close(); return;
} if (doc != null) {
result.push(doc); //放入结果数组中
} else { //没有结果
callback(null, result);
db.close();
}
})
})
};分页查询
mongo在分页查询的时候是db.student.find().skip().limit();
find()就是查找的条件,skip()就是略过的条数,limit()就是读取的条数,limit和skip配合使用就是分页查询。
数据总数两种写法:db.student.find().count()db.student.stats().count;
比如:第一页是page=0。每页10条,所以当前页的查询语句:db.student.find({}).limit(10).skip(page*10)
所以分页查询封装好的函数就是如下所示:// 查找数据,args是一个对象{"pageamount":2,"page":page}exports.find = function (collectionName, json, C,D) { var result = []; //返回结果的数组
if (arguments.length == 3) { var callback = C; var skip = 0; var limit = 0;
}else if(arguments.length==4){ var callback = D; var args = C; //应该省略的条数
var skip = args.pageamount*args.page||0; //数目限制数
var limit = args.pageamount||0; // 排序
var sort = args.sort||{}
}else{ throw new Error("find函数的参数必须是三个或四个"); return;
}
_connectDB(function (err, db) { var cursor = db.collection(collectionName).find(json).skip(skip).limit(limit).sort(sort);
cursor.each(function (err, doc) { if (err) {
callback(err, null);
db.close(); return;
} if (doc != null) {
result.push(doc); //放入结果数组中
} else { //没有结果
callback(null, result);
db.close();
}
})
})
};
去调用的时候就是:app.get("/find",function (req,res) { var page =parseInt(req.query.page);
db.find("student",{},{"pageamount":2,"page":page},{"sort":{"shijian":-1}},function (err,result) { if(err){ console.log("查找失败")
}
res.send(result);
})
});修改数据//修改exports.updateMany = function (collectionName, json1, json2, callback) {
_connectDB(function (err, db) {
db.collection(collectionName).updateMany(
json1,
json2, function (err, results) {
callback(err, results);
db.close();
});
})
};删除数据// 删除exports.deleteMany = function (collectionName, json, callback) {
_connectDB(function (err, db) {
db.collection(collectionName).deleteMany(json, function (err, result) {
callback(result.length);
db.close();
})
})
};
作者:不要和我名字一样
链接:https://www.jianshu.com/p/61c99740561f
java分页封装到dao层,Node Dao层的封装与分页相关推荐
- 带分页功能的SSH整合,DAO层经典封装
任何一个封装讲究的是,使用,多状态. Action: 任何一个Action继承分页有关参数类PageManage,自然考虑的到分页效果,我们必须定义下几个分页的参数.并根据这个参数进行查值. 然后在继 ...
- JAVA中Action层, Service层 ,model层 和 Dao层的功能区分
首先这是现在最基本的分层方式,结合了SSH架构.model层就是对应的数据库表的实体类.Dao层是使用了Hibernate连接数据库.操作数据库(增删改查).Service层:引用对应的Dao数据库操 ...
- java action dao_java中Action层、Service层和Dao层的功能区分
一.Action/Service/DAO简介: Action是管理业务(Service)调度和管理跳转的. Service是管理具体的功能的. Action只负责管理,而Service负责实施. DA ...
- [转]JAVA中Action层, Service层 ,modle层 和 Dao层的功能区分
首先这是现在最基本的分层方式,结合了SSH架构.modle层就是对应的数据库表的实体类.Dao层是使用了Hibernate连接数据库.操作数据库(增删改查).Service层:引用对应的Dao数据库操 ...
- java系统项目分为哪五大层次?控制层_业务_一个项目中说系统分为表现层、控制层、逻辑层、DAO层和最终数据库五层架构-转...
表现层就是看到的东西,比如你现在看到的当前页面 控制层就将你的请求从页面传到后台代码 逻辑层就是处理你的请求的代码 DAO层就是将数据存到数据库中的代码 数据库就是数据库了,存东西用的 ,DAO层就是 ...
- java sdi接口是什么意思_JAVA中Action层, Service层 ,modle层 和 Dao层的功能区分
首先这是现在最基本的分层方式,结合了SSH架构.modle层就是对应的数据库表的实体类.Dao层是使用了Hibernate连接数据库.操作数据库(增删改查).Service层:引用对应的Dao数据库操 ...
- 在 Java Web 项目中,Service 层和 Dao 层真的有必要每个类都加上接口吗
作者 l 会点代码的大叔(CodeDaShu) 很多程序员在刚开始工作的时候,接触到的项目都是这样做的:项目的代码被分成 Controller.Service.Dao 层,一个接口对应一个实现类,然后 ...
- java domain层_java框架中的controller层、dao层、domain层、service层、view层
1.Controller层:接口层,用户访问请求时对接. Controller层负责具体的业务模块流程的控制,在此层里面要调用Serice层的接口来控制业务流程,控制的配置也同样是在Spring的配置 ...
- java dao层 service层_Java中DAO层、Service层和Controller层的区别
DAO层: DAO层叫数据访问层,全称为data access object,属于一种比较底层,比较基础的操作,具体到对于某个表的增删改查,也就是说某个DAO一定是和数据库的某一张表一一对应的,其中封 ...
最新文章
- 第9条:用生成器表达式来改写数据量较大的列表推导式
- BUUCTF-Reverse:[GKCTF2020]Check_1n
- CSS美化网页元素大全
- 学计算机的大一新生需要买电脑吗,大一新生到底是否需要买笔记本?学长说出真理,经验分享...
- python越学越糊涂_python 学习DAY03
- 《四世同堂》金句摘抄(三)
- 读取Excel文件数据
- (22)Vue.js 综合案例:TodoMVC
- CSS常用选择器简析(带简单案例)
- 全国30m精度二级分类土地利用数据
- 什么是客户管理系统?
- 安利一款倒计时插件---雨滴桌面
- HDU 1277全文检索(字典树)
- 实施定性风险分析-规划过程组
- 微信小程序设置页面全局背景色
- Python从Word/PPT/PDF中抽取图片
- 文本表示(一)—— word2vec(skip-gram CBOW) glove, transformer, BERT
- 企查查移动端技术总监李骁:以数据之力赋能企业信息服务平台的技术提效
- 网页链接跳转qq聊天界面以及QQ群是什么实现的
- 词法分析扫描器的设计实现
热门文章
- android提权system,Android push app to /system/app/
- ARCore-Unity3d教程3 - Unity Demo发布
- C#中的深度学习:Keras.NET中的硬币识别,第一部分
- 木兰编程语言重现——儿歌查询实例,引用模块、字符串列表操作
- .NET Core 3.0中的Cookie身份验证
- PostgreSQL 12 正式发布
- 应用挂载beegfs指定目录_BeeGFS源码分析1-元数据服务概要分析
- c语言4x4按键计算器代码,4X4按键实现计算器功能.doc
- 客户端更新功能实现_exlive1.0|监控客户端功能更新
- 多台电脑集群运算_一个分布式服务器集群架构方案