Entity 正在参加 2020 年度 OSC 中国开源项目评选,请投票支持!
Entity 在 2020 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票让它出道
已投票
Entity 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」 !
Entity 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」「最积极运营项目」 !
Entity 获得 2020 年度 OSC 中国开源项目评选「最积极运营项目」 !

软件简介

Entity 是 D 语言( DLang )数据库操作 ORM 框架,设计参照 javax JPA 实现,具有很好的扩展性和规范性,数据库驱动依赖 HuntLabs 开发的 database for dlang

特性

  1. 实现了完整的 CriteriaQuery 支持

  2. Repository 也有部分封装

  3. 完全对象化查询,不用考虑底层数据库驱动

  4. 实现 EQL(Entity Query Language)实现对象化 SQL 查询语言

支持的数据库

  • PostgreSQL 9.0+

  • MySQL 5.1+

使用示例

import hunt.entity;

@Table("users")
class User : Entity
{
    @PrimaryKey
    @AutoIncrement
    int id;

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

void main()
{
    DatabaseOption options = new DatabaseOption("mysql://root:123456@localhost:3306/huntblog?charset=utf-8");
    EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("default", options);
    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);

EQL 使用

// Example for sample SELECT
auto query = em.createQuery!(User)("SELECT u FROM User u");

foreach(user; query.getResultList())
{
	logDebug(user.name);
}

 

展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论 (3)

加载中
楼主支持调试吗
2019/11/15 18:28
回复
举报
现在搞D, 用什么编辑器呢?
2018/05/14 23:39
回复
举报
冰力软件作者
VSCode 和 idea IDE都有比较好的支持。
2019/07/06 11:00
回复
举报
更多评论
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表于软件架构专区
2019/12/26 10:35

oa编译时出错,在cmd运行 mvn install就会报错找不到

@O2OA企业信息化平台 你好,想跟你请教个问题:] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project x_query_core_entity: Compilation failure: Compilation failure: [ERROR] /D:/o2oashengjiban/o2server/o2server/x_query_core_entity/src/main/java/com/x/query/core/entity/neural/Entry_.java:[7,30] 找不到符号 [ERROR] 符号: 类 SliceJpaObject_ [E...

2
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
3 评论
9 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部