创建项目
$ express express-mysql
$ cd express-mysql
$ npm install --save-dev nodemon
$ npm install mysql
pom.xml 中添加启动项:
...
"scripts": {
"start": "node ./bin/www",
"devstart": "nodemon ./bin/www"
}
...
启动:
$ DEBUG=express-mysql:* npm run devstart
准备数据库
建表,插入测试数据:
CREATE TABLE `user` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(50) DEFAULT NULL,
`age` tinyint(4) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
INSERT INTO `user` (`id`, `name`, `age`)
VALUES
(1,'gates',40),
(2,'dell',33),
(3,'liming',28);
创建配置文件 conf/db.js :
module.exports = {
mysql: {
host: '127.0.0.1',
user: 'root',
password: 'secret-pw',
database:'expressdemo', // 前面建的user表位于这个数据库中
port: 3306
}
};
编写SQL语句,dao/userSql.js
var user = {
insert:'INSERT INTO user(id, name, age) VALUES(0,?,?)',
update:'update user set name=?, age=? where id=?',
delete: 'delete from user where id=?',
queryAll: 'select * from user'
};
module.exports = user;
增加
创建 dao/userDAO.js
var express = require('express');
var router = express.Router();
var mysql = require('mysql');
var config = require('../conf/db');
var $sql = require('./userSql');
var pool = mysql.createPool( config.mysql );
module.exports = {
add: function (req, res, next) {
pool.getConnection(function(err, connection) {
var param = req.query || req.params;
connection.query($sql.insert, [param.name, param.age], function(err, result) {
if(err) {
res.send(err);
}else{
res.send('add success');
}
// 释放连接
connection.release();
});
});
}
};
修改 routes/users.js,添加 add:
var userDao = require('../dao/userDAO');
...
router.get('/add', function(req, res, next) {
userDao.add(req, res, next);
});
测试添加user,访问 http://localhost:3000/users/add?name=test&age=88
查询
userDAO 中添加:
queryAll: function (req, res, next) {
pool.getConnection(function(err, connection) {
connection.query($sql.queryAll, function(err, result) {
if(err) {
res.send(err);
}else{
res.send(result);
}
connection.release();
});
});
}
router 中添加:
router.get('/queryall', function(req, res, next) {
userDao.queryAll(req, res, next);
});
访问 http://localhost:3000/users/queryall
修改
userDAO 中添加:
update: function (req, res, next) {
pool.getConnection(function(err, connection) {
var param = req.query || req.params;
connection.query($sql.update, [param.name, param.age, +param.id], function(err, result) {
if(err) {
res.send(err);
}else{
res.send('update success');
}
connection.release();
});
});
}
router 中添加:
router.get('/update', function(req, res, next) {
userDao.update(req, res, next);
});
访问 http://localhost:3000/users/update?id=5&name=test3&age=99
删除
userDAO 中添加:
delete: function (req, res, next) {
pool.getConnection(function(err, connection) {
var id = +req.query.id;
connection.query($sql.delete, id, function(err, result) {
if(err) {
res.send(err);
}else{
res.send('delete success');
}
connection.release();
});
});
}
router 中添加:
router.get('/delete', function(req, res, next) {
userDao.delete(req, res, next);
});