Skip to content

Entity EQL

龙卷锋 edited this page Apr 16, 2020 · 5 revisions

EQL Example

Enable database configure

config/application.conf

database.enabled = true

Model

module app.model.User;
import hunt.entity;

@Table("user")
class User : Model
{
    mixin MakeModel;

    @PrimaryKey
    @AutoIncrement
    int id;

    @Column("nickname") //Table field name
    string nickName;

    int age;
}

Repository

module app.repository.UserRepository;

import hunt.framework;
import hunt.entity.repository;
import app.model.User;

class UserRepository: EntityRepository!(User, int)
{
    this() {
        // defaultEntityManager() Ensure to use the same manager
        super(defaultEntityManager());
    }

    // Example for sample INSERT INTO
    void add()
    {
        int successRow = _manager.createQuery!(User)("INSERT INTO User u (u.nickName, u.age) VALUES (:name, :age) ")
        .setParameter("name", "user1")
        .setParameter("age", 22)
        .exec();
    }

    // Example for sample UPDATE
    void edit()
    {
        int successRow = _manager.createQuery!(User)("UPDATE User u SET u.age = :age WHERE u.nickName = :name ")
        .setParameter("name", "user1")
        .setParameter("age", 20)
        .exec();
    }

    // Example for sample SELECT List
    User[] list()
    {
        return _manager.createQuery!(User)("SELECT ua FROM User u WHERE u.id >= :id ")
        .setParameter("id", 1)
        .getResultList();
    }

    // Example for sample SELECT Single
    User single()
    {
        return _manager.createQuery!(User)("SELECT u FROM User u WHERE u.id = :id AND u.age = :age ")
        .setParameter("id", 1)
        .setParameter("age", 23)
        .getSingleResult();
    }

    // Example for sample SELECT Page
    Page!User page(int page = 1, int perPage = 20)
    {
        return _manager.createQuery!(User)("SELECT u FROM User u WHERE u.id >= :id ", new Pageable(page - 1, perPage))
        .setParameter("id", 1)
        .getPageResult();
    }

    // Example for sample DELETE
    void del()
    {
        int successRow = _manager.createQuery!(User)("DELETE FROM User u WHERE u.id = :id ")
        .setParameter("id", 2)
        .exec();
    }
}
Clone this wiki locally