NodeJS node.js 如何连接访问操作MySQL数据库 MySQL DAO

NodeJS node.js 如何连接访问操作MySQL数据库?

dao-mysql: NodeJS最简MySQL交互接口交互框架访问接口访问框架套件

  • nodejs如何访问MySQL?
  • NodeJS访问MySQL最简单方法?
  • 如何用Node.js连接MySQL数据库?
  • 如何用Node.js操作MySQL数据库?
  • node.js数据库增删改查?
方法名 说明
save 异步方法: 增加/修改一条记录
saves 异步方法: 增加/修改多条记录, 批量保存
get 异步方法: 根据主键获取一条记录
getAll 异步方法: 获取某表记录
getPage 异步方法: 分页查询
getPageSortBy 异步方法: 根据某字段排序并分页查询
getByKeys 异步方法: 根据多个主键获取一条记录(联合主键查询)
findByFields 异步方法: 根据多个属性查找数据
find 异步方法: 根据某列的值查询多条记录
findBetween 异步方法: 指定范围查询多条记录
del 异步方法: 删除一条记录
sql 异步方法: 执行一条sql语句
. .
saveSync 同步方法: 增加/修改一条记录
savesSync 同步方法: 增加/修改多条记录, 批量保存
getSync 同步方法: 根据主键获取一条记录
getAllSync 同步方法: 获取某表记录
getPageSync 同步方法: 分页查询
getPageSortBySync 同步方法: 根据某字段排序并分页查询
getByKeysSync 同步方法: 根据多个主键获取一条记录(联合主键查询)
findByFieldsSync 同步方法: 根据多个属性查找数据
findSync 同步方法: 根据某列的值查询多条记录
findBetweenSync 同步方法: 指定范围查询多条记录
delSync 同步方法: 删除一条记录
sql 同步方法:: 执行一条sql语句

User表结构如下(使用的MySQL客户端是Navicat):
NodeJS最简MySQL交互接口交互框架访问接口访问框架套件NodeJS node.js 如何连接访问操作MySQL数据库?
接下来就开始使用Node.js访问MySQL

首先安装dao-mysql模块:

npm install dao-mysql

** Demo:**

var Dao = require("./Dao").Dao

//初始化MySQL连接,这里填写您的主机,用户名,密码,数据库,端口号...
var config = {
	host: '192.168.1.86',
	user: 'tester',
	password: 'loiqwnltnlz1123',
	database: 'test',
	port: '8918'
}

const TABLE_NAME = "User"

var dao = new Dao(config)



/////////////  异步保存  /////////////////////////



// 逐个保存3个用户
function save3Users() {
	save("u1", 12, "lincen1")
	save("u2", 20, "lincen2")
	save("u3", 18, "lincen3")
}

// 批量保存3个用户
function saves3Users() {

	dtos = [
		{ id: "u1", age: 12, name: "lincen1" },
		{ id: "u2", age: 20, name: "lincen2" },
		{ id: "u3", age: 18, name: "lincen3" }
	]
	// 批量保存
	dao.saves(TABLE_NAME, dtos)
	console.log("saves3Users")
}

function save(id, age, name) {

	var dto = {
		id: id,
		name: name,
		age: age
	}

	//把数据保存到User表中
	dao.save(TABLE_NAME, dto)
	console.log("save1User")
}

// 生成3条测试记录
save3Users()

// 批量保存3个用户
saves3Users()

//获取表中id为u1的用户信息
dao.get(TABLE_NAME, "u1", function (u) {
	if (u != null)
		console.info("get: " + u.id + ", " + u.name + ", " + u.age)
})

//获取表中 id = u1 且age = 12的用户信息 (联合主键查询)
ids = { id: "u1", age: 12 }
dao.getByKeys(TABLE_NAME, ids, function (u) {
	if (u != null)
		console.info("getByKeys: " + u.id + ", " + u.name + ", " + u.age)
})

//查找User表中 age == 18 的所有记录
dao.find(TABLE_NAME, "age", 18, function (us) {
	for (var i in us) {
		var u = us[i]
		console.info("find: " + u.id + ", " + u.name + ", " + u.age)
	}
})

//查找User表所有记录
dao.getAll(TABLE_NAME, function (us) {
	for (var i in us) {
		var u = us[i]
		console.info("getAll: " + u.id + ", " + u.name + ", " + u.age)
	}
})

//查找User表中 age >= 10 且 age <= 20 的所有记录
dao.findBetween(TABLE_NAME, "age", 15, 20, function (us) {
	for (var i in us) {
		var u = us[i]
		console.info("findBetween: " + u.id + ", " + u.name + ", " + u.age)
	}
})

//删除User表中id为u123123的数据
dao.del(TABLE_NAME, "id", "u1")
console.log("delete")





var ss = []
for (let index = 10; index < 35; index++) {
	ss.push({ id: "u" + index, age: 19, name: "lincen" + index })
}

// 批量保存
dao.saves(TABLE_NAME, ss)
console.info("saves:" + ss.length + " users")


//分页查找 
for (let page = 1; page <= 3; page++) {

	var countPerPage = 10
	dao.getPage(TABLE_NAME, page, countPerPage, function (rs) {
		console.info("getPage:" + rs.length)
	})
}

//分页查找, 按age排序
for (let page = 1; page <= 3; page++) {

	var countPerPage = 10
	dao.getPageSortBy(TABLE_NAME, "age", true, page, countPerPage, function (rs) {
		console.info("getPageSortBy:" + rs.length)
	})
}


var sql = "SELECT * FROM " + TABLE_NAME + " WHERE age >= ? AND name like ?;"
var param = [12, "lin%"]
dao.sql(sql, param, function (rs) {
	rs.forEach(r => {
		console.info(JSON.stringify(r))
	});
	console.info("sql result size: " + rs.length)
})

////////////////  异步保存  //////////////////////








//////////////////////  同步保存  ////////////////////////////


async function startTest() {

	// 单个保存
	await dao.saveSync(TABLE_NAME, { id: "u1", age: 12, name: "lincen1" })
	console.log("saveSync: u1")
	await dao.saveSync(TABLE_NAME, { id: "u2", age: 20, name: "lincen2" })
	console.log("saveSync: u2")
	await dao.saveSync(TABLE_NAME, { id: "u3", age: 18, name: "lincen3" })
	console.log("saveSync: u3")

	// 批量保存
	await dao.savesSync(TABLE_NAME, [{ id: "u1", age: 12, name: "lincen1" }, { id: "u2", age: 20, name: "lincen2" }, { id: "u3", age: 18, name: "lincen3" }])

	//获取表中id为u123123的用户信息
	u = await dao.getSync(TABLE_NAME, "u1")
	console.log("getSync:" + JSON.stringify(u))

	//如果一个表有多个主键, 用这个方法取值
	u = await dao.getByKeysSync(TABLE_NAME, { id: "u1", age: 12 })
	console.log("getByKeysSync:" + JSON.stringify(u))

	//查找User表中 age == 18 的所有记录
	us = await dao.findSync(TABLE_NAME, "age", 151)
	for (var i in us) {
		var u = us[i]
		console.info("findSync:" + JSON.stringify(u))
	}

	//查找所有记录
	us = await dao.getAllSync(TABLE_NAME)
	for (var i in us) {
		var u = us[i]
		console.info("getAllSync:" + JSON.stringify(u))
	}

	//查找User表中 age >= 10 且 age <= 20 的所有记录
	us = await dao.findBetweenSync(TABLE_NAME, "age", 15, 20)

	for (var i in us) {
		var u = us[i]
		console.info("findBetweenSync:" + JSON.stringify(u))
	}

	//删除User表中id为u123123的数据
	rs = await dao.delSync(TABLE_NAME, "id", "u1")
	console.info("delSync:" + JSON.stringify(rs))


	var ss = []
	for (let index = 10; index < 35; index++) {
		ss.push({ id: "u" + index, age: 19, name: "lincen" + index })
	}

	// 批量保存
	await dao.savesSync(TABLE_NAME, ss)
	console.info("savesSync:" + ss.length + " users")


	//分页查找
	var page = 1
	while (true) {
		var countPerPage = 10
		var dtos = await dao.getPageSync(TABLE_NAME, page, countPerPage)
		console.info("getPageSync:" + dtos.length)
		if (dtos.length < countPerPage) {
			break
		}
		page++
	}


	//分页查找, 按age排序
	var page = 1
	while (true) {
		var countPerPage = 10
		var dtos = await dao.getPageSortBySync(TABLE_NAME, "age", true, page, countPerPage)
		console.info("getPageSortBySync:" + dtos.length)
		if (dtos.length < countPerPage) {
			break
		}
		page++
	}
}

startTest()


////////////////////  同步保存  ///////////////////////////
发布了12 篇原创文章 · 获赞 3 · 访问量 1565

猜你喜欢

转载自blog.csdn.net/lc574907580/article/details/103096091
今日推荐