程序员DartVM服务器开发

DartVM服务器开发(第十四天)--Jaguar_ORM增删查

2018-09-03  本文已影响11人  rhyme_lph

上一篇文章我们讲解了如何使用ORM今天,我们来学习在数据库中通过ORM实现增删查改!让我们来一起学习吧!

1.回顾内容

回顾一下上一篇的内容,主要有

dev_dependencies:
  build_runner:
  jaguar_orm_gen:

2.添加数据

添加一条数据,我们可以通过bean.insert(model)方式添加

        UserBean userBean=new UserBean(pgAdapter);
        User newUser=new User();
        newUser.id='1';
        newUser.username='rhyme';
        newUser.password='123456';
        newUser.avatarPath='static/admin.png';
        newUser.avatar='http:/localhost:8080/static/admin.png';
        newUser.email='rhymelph#gmail.com';
        newUser.role='0';
        newUser.phoneNumber='159xxxxxxxx';
        await userBean.insert(newUser);

这里需要注意,添加之前如果该数据已经存在(根据主键判断),会报异常,异常如下

异常.png
正确做法,是先通过bean.find(primaryKey)查询该数据是否已经存在,然后再进行添加
        UserBean userBean=new UserBean(pgAdapter);
        if(await userBean.find('1')==null){
        User newUser=new User();
        newUser.id='1';
        newUser.username='rhyme';
        newUser.password='123456';
        newUser.avatarPath='static/admin.png';
        newUser.avatar='http:/localhost:8080/static/admin.png';
        newUser.email='rhymelph#gmail.com';
        newUser.role='0';
        newUser.phoneNumber='159xxxxxxxx';
        await userBean.insert(newUser);
        }

有时候可能需要添加多条记录到数据库,我们可以使用bean.inserMany(List<Model>)

        UserBean userBean=new UserBean(pgAdapter);
        List<User> users=[];
        for(int i in [2,3,4,5]){
          User user=new User();
          user.id=i.toString();
          user.username='rhyme';
          user.password='123456';
          user.avatarPath='static/admin.png';
          user.avatar='http:/localhost:8080/static/admin.png';
          user.email='rhymelph#gmail.com';
          user.role='0';
          user.phoneNumber='159xxxxxxxx';
          users.add(user);
        }
        await userBean.insertMany(users);

3. 删除数据

根据主键删除数据我们可以使用bean.remove(primaryKey)

        UserBean userBean=new UserBean(pgAdapter);
        userBean.remove('1');//删除id为1的数据

这个可能需求没那么大,删除表里所有数据可以使用bean.removeAll()

        UserBean userBean=new UserBean(pgAdapter);
        userBean.removeAll();

删除多条数据我们可以使用bean.removeMany(List<Model>),如果数据不存在也不会包异常

        UserBean userBean=new UserBean(pgAdapter);
        userBean.removeMany(<User>[
          newUser1,
          newUser2,
        ]);

根据条件删除数据,我们可以使用的条件有

      UserBean userBean=new UserBean(pgAdapter);
      await bean.removeWhere(bean.id.eq('1'));//删除id为1的数据

4. 查询数据

如果实体类里面使用@PrimaryKey()标识字段,就会在使用pub run build_runner build之后多生成一个方法find(key)

    UserBean bean=new UserBean(pgAdapter);
    User user=await bean.find('1');//查询id为1的User

如果你不想通过主键去查询,可以根据其它字段去查一条数据,如果有多条与查询字段相同的数据,会查询到比较靠前的一条,我们可以通过bean.findOne(find)查询

    UserBean bean=new UserBean(pgAdapter);
    User user=await bean.findOne(bean.finder.eq('username', 'rhyme'));

我们还可以使用bean.findOneWhere(exp)查询

     UserBean bean=new UserBean(pgAdapter);
     User user=await bean.findOneWhere(bean.id.eq('1'));

根据条件查询多条数据,我们可以使用bean.findWhere(exp)查询

    UserBean bean=new UserBean( pgAdapter);
    List<User> users=await bean.findWhere(bean.sex.gtEq(0));

查询表中所有数据,我们可以使用bean.getAll()查询

    UserBean bean=new UserBean( pgAdapter);
    List<User> users=await bean.getAll();

5.更新数据

更新一条数据我们可以使用bean.update(model,only:Set<String>)
这里要注意的是,该更新根据主键更新,所以model必须主键有赋值,only里面添加的是字段名,表示只更新里面包含的字段,不添加only默认更新该条数据的全部字段

//更新id为1的username字段
    await bean.update(new User()
    ..id='1'
    ..username='rhyme_lph',
    only: new Set()
    ..add('username'));

我们可以使用bean.updateMany(List<Model>)更新多条数据

    UserBean bean=new UserBean( pgAdapter);
    await bean.updateMany(<User>[
        new User()
        ..id='1'
        ..username='rhyme1'
        ..password='123'
        ..sex=3
        ..phoneNumber='1597551'
        ..role=3,
        new User()
        ..id='2'
        ..username='rhyme1'
        ..password='123'
        ..sex=3
        ..phoneNumber='1597551'
        ..role=3,
    ]);

ok,上面就是今天的内容,我们明天见吧!

如果想继续学习DartVM服务器开发,请关注我,学习更多骚操作!

上一篇下一篇

猜你喜欢

热点阅读