飞道软件工厂

插件式开发

数据库无关

之前我们讲到的数据库操作都是基于postgresql数据库的,使用的是原子操作@mmstudio/an000036

我们如果要使用别的数据库怎么办?

如果使用之前的方法,我们有另外一个选择,就是改用原子操作@mmstudio/an000037完成mysql或是mariadb数据库的操作。

不管是使用@mmstudio/an000036还是@mmstudio/an000037都有一个问题:代码只能针对同一个具体的数据库。这种方法对于确定数据库类型的应用(事实上很多应用都可以提前确定数据库的)可以这么做,对于不确定类型的数据库就无能为力了,需要切换不同原子操作。

我们还有一个原子操作@mmstudio/an000014,同时支持mysql/mariadb和postgre数据库,但如果想使用更多的数据库怎么办呢?原子操作@mmstudio/000049可支持mysql,mariadb,postgressql,sqlite,msserver,oracle。类sql的语法使得不但易于使用,还能防止书写错误.

引入原子操作

import an49 from '@mmstudio/an000049';

增Create

同时新增多条记录

const db = an49();
const tb = db<ITable001>('tb001');
await tb.insert([{
	fld001: '001',
	fld002: '101',
	fld003: 1
}, {
	fld001: '002',
	fld002: '102',
	fld003: 2
}, {
	fld001: '003',
	fld002: '103',
	fld003: 3
}, {
	fld001: '004',
	fld002: '104',
	fld003: 4
}]);

单条记录

const db = an49();
const tb = db<ITable001>('tb001');
await tb.insert({
	fld001: '005',
	fld002: '105',
	fld003: 5
});

改Update

const db = an49();
const tb = db<ITable001>('tb001');
const updatedrow = await tb.update('fld003', 6).where('fld001', '=', '005');

同时修改多列数据时,以下方法也许更方便:

const db = an49();
const tb = db<ITable001>('tb001');
const updatedrowcount = await tb.update({
	fld001: '555',
	fld002: '115',
	fld003: 5
}).where('fld001', '=', '005');

删Delete

删除数据切记加条件,否则有可能误删!!!

删除数据切记加条件,否则有可能误删!!!

删除数据切记加条件,否则有可能误删!!!

const db = an49();
const tb = db<ITable001>('tb001');
const deletedrowcount = await tb.del().where('fld003', '=', 5);

查Read

以下示例代码可以看出,其操作与sql极其类似。

const db = an49();
const tb = db<ITable001>('tb001');
const data = await tb.select('fld002', 'fld003').where({ fld001: '001' }).orWhere('fld002', '=', '102').orWhere('fld003', '>', 1).orWhere('fld002', 'like', '%0%').offset(1).limit(3);

创建表

const db = an49();
await db.schema.dropTableIfExists('tb001');
await db.schema.createTableIfNotExists('tb001', (builder) => {
	builder.comment('table 001');
	builder.string('fld001').comment('id');
	builder.string('fld002').comment('name');
	builder.integer('fld003').comment('order');
});