-
Notifications
You must be signed in to change notification settings - Fork 28
Entity EQL
龙卷锋 edited this page Apr 16, 2020
·
5 revisions
config/application.conf
database.enabled = true
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;
}
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();
}
}