4 Star 5 Fork 1

HuntLabs / hunt-entity

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

Build Status

hunt-entity

Hunt-entity is an object-relational mapping tool for the D programming language. Referring to the design idea of JPA.

Support databases

  • PostgreSQL 9.0+
  • MySQL 5.1+
  • SQLite 3.7.11+

Depends

Simple code

import hunt.entity;

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

    @PrimaryKey
    @AutoIncrement
    int id;

    string name;
    double money;
    string email;
    bool status;
}

void main()
{
    auto option = new EntityOption;

    option.database.driver = "mysql";
    option.database.host = "localhost";
    option.database.port = 3306;
    option.database.database = "test";
    option.database.username = "root";
    option.database.password = "123456";
    option.database.charset = "utf8mb4";
    option.database.prefix = "hunt_";

    EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("default", option);
    EntityManager em = entityManagerFactory.createEntityManager();

    // begin transaction
    em.getTransaction().begin();

    // define your database existing row id in here
    int id = 10;

    auto user = em.find!User(id);
    log("User name is: ", user.name);

    // commit transaction
    em.getTransaction().commit();

    em.close();
    entityManagerFactory.close();
}

Insert row

    auto user = new User();
    user.name = "Brian";
    user.email = "brian@huntlabs.cn";
    user.money = 99.9;
    
    // insert user
    em.persist(user);
    log("User id is: ", user.id);

Delete row

    int n = em.remove!User(id);
    log("The number of users deleted is: ", n);

Update row

    auto user = em.find!User(id);
    log("User name is: ", user.name);
    user.name = "zoujiaqing";
    em.merge!User(user);
    log("The number of users updated is: ", n);

Use CriteriaQuery to find

    // create CriteriaBuilder object from em
    CriteriaBuilder builder = em.getCriteriaBuilder();

    CriteriaQuery!User criteriaQuery = builder.createQuery!User;
    Root!User root = criteriaQuery.from();
    Predicate p1 = builder.equal(root.User.id, id);
    TypedQuery!User typedQuery = em.createQuery(criteriaQuery.select(root).where(p1));

    auto user = typedQuery.getSingleResult();

    log("User name is: ", user.name);

Use CriteriaQuery to Multi-condition find

    // create CriteriaBuilder object from em
    CriteriaBuilder builder = em.getCriteriaBuilder();

    CriteriaQuery!User criteriaQuery = builder.createQuery!User;
    Root!User root = criteriaQuery.from();

    Predicate p1 = builder.lt(root.User.id, 1000);  // User id is less than 1000.
    Predicate p2 = builder.gt(root.User.money, 0);  // User money is greater than 0.
    Predicate p3 = builder.like(root.User.name, "z%");  // User name prefix is z.

    TypedQuery!User typedQuery = em.createQuery(criteriaQuery.select(root).where(builder.and(p1, p2), p3));
    User[] users = typedQuery.getResultList();

    log("The number of users found is: ", users.length);

Avaliable Versions

Identifier Description
HUNT_SQL_DEBUG Used to log debugging messages about SQL handling
HUNT_SQL_DEBUG_MORE Used to log more debugging messages about SQL handling

空文件

简介

An object-relational mapping (ORM) framework for dlang's database, support PostgreSQL and MySQL. 展开 收起
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
D
1
https://gitee.com/huntlabs/hunt-entity.git
git@gitee.com:huntlabs/hunt-entity.git
huntlabs
hunt-entity
hunt-entity
master

搜索帮助

14c37bed 8189591 565d56ea 8189591