1.0.41 • Published 4 months ago

yoyomysql v1.0.41

Weekly downloads
-
License
MIT
Repository
-
Last release
4 months ago

YoyoMysql 链式操作库 (采用mysql2)

前言

对于sql不熟悉的人不是很友好,而且复用并不是很方便,所以封装了这个链式方法库(可能有些地方写得不是很好)!但是我会尽力去完善它!

我是Yoyo感谢您的浏览!!!!

引入

const yoyomysql = require('yoyomysql');

连接mysql数据库

const Mysql = yoyomysql({
    	host: '127.0.0.1',//地址
        port: 3306,//端口
        user: 'root',//用户名
        password: '',//密码
        database: '',//连接数据库
        charset: 'utf8',//应该设置编码(省略在某些情况下会有错误)

        //以下选项均为默认值(如果不需要变动可省略)
        waitForConnections: true, // 为true时,连接排队等待可用连接。为false将立即抛出错误
        connectionLimit: 10, //单次可创建最大连接数
        queueLimit: 0 //连接池的最大请求数,从getConnection方法前依次排队。设置为0将没有限制
});
//这里和mysql2一样的配置数据

其它设置

Mysql.table_prefix = 'yoyo_';//你可以设置一个表前缀(然后使用name直接用名即可) table它需要完整的名
Mysql.isShowSql = true;//你可以调试的时候显示sql语句

添加数据

var result = Mysql.table('user')//需要操作的完整表名
.field(['name','account','describe'])//设置字段
.insert(['我是名称',123456,'我是描述']);//添加一条数据
//你也可以添加多条(比如这样)
.insert([
    ['我是名称1',123456,'我是描述1'],
    ['我是名称2',123456]//(这里字段少了一个,我们不建议这样写 但是它会被null填充)
]);
//或许你想这样做(这样直接指定字段)
var result = Mysql.table('user')//需要操作的完整表名
.insert({name:'我是名称呀',account:9877,describe:'说得是这样?'});//添加一条数据
//任然,你也可以添加多条(比如这样)
.insert([
    {name:'我是名称呀',account:9877,describe:'说得是这样?'},
    {name:'我是名称呀',account:9877}//(这里字段少了一个,我们不建议这样写 但是它会被null填充)
]);

删除数据

var result = Mysql.table('user')//需要操作的完整表名
.where('id',1)//获取你可以添加一些条件  (id = 1)
.where('name','<>','yoyo')//获取你可以添加一些条件  (name <> 'yoyo')
.where({
    account:12345,
    rmb:88
})//获取你可以添加一些条件  (account = 12345 AND rmb = 88)
.where([
    ['name','like','%yoyo%'],
    ['ps','in',[1,2,3,4]],
])//获取你可以添加一些条件  (name like %yoyo% AND ps in (1,2,3,4))
.limit(5)//获取还可以限制删除的条数
.delete();

更新数据(修改)

var result = Mysql.table('user')//需要操作的完整表名
.where('id',1)//获取你可以添加一些条件  (id = 1)
.update({
    rmb:99999,
    name:'我被修改了'
});
//修改id = 1 的 rmb 为 99999 ,name 为 我被修改了

查询数据

!!!!!!!!!!!!!查询返回值有修改哦!!!!!看我
result.data;//查询到的数据
result.field;//字段
result.get(0,'name');//获取索引0的name字段数据 方便开发者快速获取
result.total;//查询到的数据总数量

var result = Mysql.table('user')//需要操作的完整表名
.where('id',1)//获取你可以添加一些条件  (id = 1)
.find();//查询一条数据

//或者
.select();//查询多条
//你任然可以用
.limit(5)
//or
.limit(0,18)
//去限制它
//我们看看排序
.order('id')//默认升序
.order('id','desc')//设置降序
.order({
    id:'asc',
    rmb:'desc'
})//这种方式 2.0.0 还未支持 可能在 2.0.0 +会添加此方式

//你也可以单独设置字段显示默认是 *
.field('id,name')//只要两个字段
.field('id,name AS 名称')//或者用来取名也可以

//多表联查也是支持的
var result = Mysql.table('user')//需要操作的完整表名
.alias('u')//取个别名
.join('user2 u2','u.id = u2.id')//你可以这样的当然它还有(leftJoin,rightJoin,fullJoin)他们分别代表(INNER JOIN,LEFT JOIN,RIGHT JOIN,FULL JOIN)

.whereRaw(sql,bind);//sql是字符串,bind 是 Number|String|Array
.whereRaw("id = 1 OR name = 'yoyo'");//这个是未加工的
.whereRaw("id = ? OR name = ?",[1,'yoyo']);//这个是未加工的


//快捷的聚合查询
//统计数量
var result = Mysql.table('user')//需要操作的完整表名
.count();//统计数量
.count('account');//依然也可以指定字符

//获取最大值
var result = Mysql.table('user').max('rmb');//获取指定字段的最大值(你必须给它指定字段)

//获取最小值
var result = Mysql.table('user').min('rmb');//获取指定字段的最小值(你必须给它指定字段)

//获取平均值
var result = Mysql.table('user').avg('rmb');//获取指定字段的平均值(你必须给它指定字段)

//获取总和
var result = Mysql.table('user').sum('rmb');//获取指定字段的总和(你必须给它指定字段)

分页查询

var result = Mysql.table('user').pages(1,10);//查询第一页  每页10个
var result = Mysql.table('user').pages(1);//查询第一页  每页10个默认也是10

result.data;//查询到的数据
result.field;//字段
result.get(0,'name');//获取索引0的name字段数据 方便开发者快速获取
result.pages;//分页是其它数据包含如下
{max:4,current:3,limit:3}
max//最大页数
current//当前页数
limit//每页显示数量
dataCount//数据总数

事务操作

// 启动事务(都是异步的你可以用 await 等待它或者 在 then 回调里面执行)
await Mysql.startTrans();
try {
    // 数据操作(举例操作)
    await Mysql.table('user').insert({name:'测试举例',password:'测试举例'});
    await Mysql.table('user').where('id',1).update({name:'修改测试',password:'我被修改了'});
    // ....
    // 提交事务
    await Mysql.commit();
} catch (e) {
    // 回滚事务
    await Mysql.rollback();
}

原始的查询和执行

//如果还是没有您需要的你可以自己编写sql使用以下的方法执行

Mysql.query(sql);//执行并返回
Mysql.query(sql,bind);//执行并返回  (它有一个可选参数绑定就是预处理方式)

result.data;//查询到的数据
result.field;//字段
result.get(0,'name');//获取索引0的name字段数据 方便开发者快速获取


//还有执行不返回的
Mysql.execute(sql);
Mysql.execute(sql,bind);//使用方式和上面雷同
1.0.41

4 months ago

1.0.31

4 months ago

1.0.30

4 months ago

1.0.23

10 months ago

1.0.22

1 year ago

1.0.21

1 year ago

1.0.15

1 year ago

1.0.14

1 year ago

1.0.13

1 year ago

1.0.12

1 year ago

1.0.11

1 year ago

1.0.1

1 year ago

1.0.0

1 year ago