如何用eql语句对数据库进行操作

流过昼夜 提交于 2019-11-29 00:25:39
  • 用eql语句对数据库进行查询
string sql = " SELECT * FROM XX x";

        string[] wheres;
        if(c.length)//(string类型)
        {
            wheres ~= "x.c '%" ~ c ~ "%'";//%"~  ~"%用来拼接字符串 
        }

        if (z)
        {
            wheres ~= "x.z = :z"; 
        }

        

        if (wheres.length > 0)
        {
            sql ~= " WHERE ";

            for (int i = 0; i < wheres.length; i++)
            {
                if (i > 0)
                {
                    sql ~= " AND ";
                }

                sql ~= wheres[i];
            }
        }

        sql ~= " ORDER BY x.created DESC(ASC)";//这部分是查询出来的条件按照创建时间来排序,可以根据需求来更换字段(DESC是倒序,ASC是正序)
        auto query = _manager.createQuery!(XX)(sql, new pageable(page-1, limit));
        query.setParameter("c",c);
        query.setParameter("z",z);
        return query.getPageResult;
        
  • 用eql语句对数据库信息进行修改

下面是对修改操作的示例

auto temp1 = _manager.createQuery!(Post)(" UPDATE Post p set p.deleted = :now WHERE p.id = :deleted ")
        .setParameter("now", time)
        .setParameter("deleted", deleted)
        .exec();
        
        logError(temp1);
        return true;
        
        //这部分对Post表中的删除时间进行了修改
  • 用eql语句对数据库信息进行删除

下面是对于删除操作的示例

auto del = _manager.createQuery!(ItemMini)(" delete User u where u.id = :Id ")
            .setParameter("Id", Id)
	        .exec();
  • 用eql语句对数据库信息进行添加

下面是对于添加操作的示例

auto insert = em.createQuery!(UInfo)("  INSERT INTO UInfo u(u.nickName,u.age) values (:name,:age)"); 
	insert.setParameter("name","momomo");
	insert.setParameter("age",666);
logDebug(" insert result : ",insert.exec());
  • 如果两表或者多表查询的话可以用下面的方法处理

下面是多表关联查询的示例

string sql = " SELECT x,c,u FROM XX x LEFT JOIN  CC c ON c.id = x.cc_id LEFT JOIN UU u ON u.id = x.uid ";
//之后在用查询语句的模板就可以了
  • 对数据表的模糊查询应该怎么进行 下面是模糊查询的示例
select * from like  '%" ~ xx ~ "%' 拼接字符串的时候用%"~  ~"%
//模糊查询语句
  • 如何用D语言进行分页操作

下面是分页操作的示例

Page!XXX findPageByXXX(string class_name,int teacherId,int classId, int page = 1, int limit = 10)
    {
       
             auto result =  _manager.createQuery!(Classes)(" SELECT * FROM XXX x ORDER BY x.created DESC ", new Pageable(page-1, limit))
            .getPageResult();
            return result;
        }
        //如果按照创建时间来排序的话用created DESC (倒序),ASC(正序),如果根据别的字段排序请根据实际情况
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!