使用egg-mysql操作mysql数据库
2023-09-11 14:15:29 时间
1、安装mysql
npm i egg-mysql -S
2、在config/plugin.js里声明改插件
exports.mysql = { enable: true, package: 'egg-mysql', };
3、在config/config.default.js里配置
config.mysql = { // 单数据库信息配置 client: { // host host: 'localhost', // 端口号 port: '3306', // 用户名 user: '****', // 密码 password: '*******', // 数据库名 database: 'egg', }, // 是否加载到 app 上,默认开启 app: true, // 是否加载到 agent 上,默认关闭 agent: false, };
4、在service服务层操作数据库,符合Controller -> Service -> MySQL模式
this.app.mysql.query(sql, values); //sql语句模式 //比如查询users表name=Jack的数据 let name = 'Jack'; this.app.mysql.query('select * from users where name = ?', [name]);
5、egg封装增删改查
1、插入,向users表内插入一条数据
const result = await this.app.mysql.insert('users', { name: 'Jack', age: 18 })
判断:result.affectedRows === 1
2、查询,查询users表name=Jack的数据
const result = await this.app.mysql.select('users', { columns: ['id', 'name'], //查询字段,全部查询则不写,相当于查询* where: { name: 'Jack' }, //查询条件 orders: [ ['id', 'desc'] //降序desc,升序asc ], limit: 10, //查询条数 offset: 0 //数据偏移量(分页查询使用) })
判断:result.length > 0
3、修改,修改users表id=1的数据age为20
const result = await this.app.mysql.update('users', { age: 20 //需要修改的数据 }, { where: { id: 1 } //修改查询条件 });
判断:result.affectedRows === 1
4、删除,删除users表name=Jack的数据
const result = await this.app.mysql.delete('users', { name: 'Jack' })
判断:result.affectedRows === 1
5、Mysql常用语句
(1)关联表查询(查询评价表,关联用户表头像和昵称)
select evaluate.*, user.name, user.figureurl from evaluate left join user on evaluate.userId = user.id where cId = 123
(2)更新商品点赞+1,并且一次更新id为1,2,3三条记录
update commodity set praise = praise + 1 where id in (1,2,3)
6、事务。在某些情况下,执行一个操作需要多次操作数据库,但这多次操作必须同时成功才行,比如打款的情况,需要从A账户扣钱,再向B账户加钱,假设A账户余额不足,则整个打款操作就应该恢复到原有状态。
const conn = await app.mysql.beginTransaction(); // 初始化事务 try { await conn.insert(table, row1); // 第一步操作 await conn.update(table, row2); // 第二步操作 await conn.commit(); // 提交事务 } catch (err) { // error, rollback await conn.rollback(); // 一定记得捕获异常后回滚事务!! throw err; }
.
相关文章
- shell脚本--操作MySQL数据库
- MySQL_(Java)使用JDBC向数据库中删除(delete)数据
- PHP数据库操作:从MySQL原生API到PDO
- 创建mysql数据库并指定编码
- ajax结合mysql数据库和smarty实现局部数据状态的刷新
- 在myeclipse环境中配置mysql数据库连接
- MySQL数据库下.frm .MYD .MYI损坏恢复操作
- R语言使用RMySQL连接及读写Mysql数据库 测试通过
- 数据库基础之Mysql(3)mysql删除历史binlog
- 数据库内核月报 - 2015 / 08-MySQL · 答疑解惑 · open file limits
- 数据库查询优化——Mysql索引
- MySQL数据库order by 主键(索引) 查询慢解决方案
- MYsql 数据库密码忘记(Window)-2(mysql 5.7)
- Shell操作mysql数据库
- atitit.sql server2008导出导入数据库大的表格文件... oracle mysql
- Linux下MySQL源码编译安装(eg:mysql-5.6.27.tar.gz )
- 使用Qt操作MySQL数据库中的表格
- 〖Python 数据库开发实战 - MySQL篇㉕〗- 数据更新操作 - UPDATE 语句
- mysql数据库(3):创建并使用数据库
- Python编程:records库操作SQL查询MySQL数据库
- Python:mysql-connector-python模块对MySQL数据库进行增删改查
- Windows下安装MySQLdb, Python操作MySQL数据库的增删改查
- MySQL Study之--Mysql无法启动“mysql.host”
- Mysql下Limit注入方法(此方法仅适用于5.0.0<mysql<5.6.6的版本)
- PostgreSQL的学习心得和知识总结(九十二)|语法级自上而下完美实现MySQL数据库的 枚举类型创建表及插入数据等操作 的实现方案
- Mysql数据库的mysql Schema 究竟有哪些东西& 手工注入的基础要领
- MYSQL提权之反弹SHELL——数据库提权属于webshell到管理员的纵向提权,本质还是利用udf提权,无非是在mysql自定义函数中使用了反弹shell而已
- 安全测试===Mysql 注入技巧学习 MySQL注入技巧(1)
- mysql 数据库 分表后 怎么进行分页查询?Mysql分库分表方案?
- MySQL----数据库概念及数据模型
- MySQL数据库性能优化由浅入深(表设计、慢查询、SQL索引优化、Explain分析、Show Profile分析、配置优化)