数据库无关
之前我们讲到的数据库操作都是基于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');
});