Entity 是 D 语言( DLang )数据库操作 ORM 框架,设计参照 javax JPA 实现,具有很好的扩展性和规范性,数据库驱动依赖 HuntLabs 开发的 database for dlang 。
实现了完整的 CriteriaQuery 支持
对 Repository 也有部分封装
完全对象化查询,不用考虑底层数据库驱动
实现 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);
}
在日常的Java项目开发中,entity(实体类)是必不可少的,它们一般都有很多的属性,并有相应的setter和getter方法。entity(实体类)的作用一般是和数据表做映射。所以快速写出规范的entity(实体类)是java开发中一项必不可少的技能。 在项目中写实体类一般遵循下面的规范: 1、根据你的设计,定义一组你需要的私有属性。 2、根据这些属性,创建它们的setter和getter方法
游戏场景中,动态创建的一切物体定义为实体。此模块提供管理实体和实体组的功能,如显示隐藏实体、挂接实体(如挂接武器、坐骑,或者抓起另一个实体)等。实体使用结束后可以不立刻销毁,从而等待下一次重新使用。 EntityGroup 内部包含对象池 实体加载成功订阅 GameEntry.Event.Subscribe(ShowEntitySuccessEventArgs.EventId, OnShowEnt
起因 使用 mybatis-plus 操作后获得的数据类型为 Entity,但是前端界面往往需要展示一些其他的字段数据,此时就需要 将 Entity 转化为 Vo。 那么他们三者的关系是什么呢?面向的使用对象不同 entity: 对应数据库表模型, vo: 对应需要返回到前端的数据模型 , 通常使用于后端返回的数据类 dto: 对应后台内部调用的数据模型, 通常使用于前端传入的参数类 packag
通常情况下,在前后端分离的大背景下,我们后台服务返回给前端的通常都是格式化的数据,比如Json,开始的时候,我们用json包生产一个json的字符串,配合http 协议的一些API 来自定义实现 spring发展到现在,已经都包装出来了通用的处理类:ResponseEntity ,此类继承自HttpEntity public class ResponseEntity<
对于这些概念,网上众说纷纭。不要纠结他是什么,不要纠结DTO与VO的区别是什么。在实际编码过程中,按照你们研发组的规范来做就好了。可能你觉得划分的比较细,专业性比较强。但用处不大。 1. 概念 如下概念是我摘要解释比较合理的。望周知。 VO(View Object): 视图对象,用于展示层,这很好理解,就是页面所需数据封装。 VO(Value Object): 值对象,跟引用对象(Referenc
从戏剧!框架文档: Play2.0中没有内置的JPA实现;您可以选择任何可用的实现。例如,要使用Hibernate,只需将依赖项添加到项目中: 我的选择是什么而不是冬眠? 你认为什么最适合留言板网站? 我知道Hibernate有一点开销,对吗?
本文向大家介绍什么是 ORM 框架?相关面试题,主要包含被问及什么是 ORM 框架?时的应答技巧和注意事项,需要的朋友参考一下 ORM(Object Relation Mapping)对象关系映射,是把数据库中的关系数据映射成为程序中的对象。 使用 ORM 的优点:提高了开发效率降低了开发成本、开发更简单更对象化、可移植更强。
ORM(Object-relational mapping),对象关系映射。 是为了解决面向对象与关系型数据库存在的不匹配问题。 ORM框架的优点: 开发效率更高 数据访问更抽象、轻便 支持面向对象封装
本文向大家介绍在Python的Django框架中创建语言文件,包括了在Python的Django框架中创建语言文件的使用技巧和注意事项,需要的朋友参考一下 当你标记了翻译字符串,你就需要写出(或获取已有的)对应的语言翻译信息。 这里就是它如何工作的。 地域限制 Django不支持把你的应用本地化到一个连它自己都还没被翻译的地域。 在这种情况下,它将忽略你的翻译文件。 如果你想尝试这个并且Djang
嗨,我使用Play框架2.4.3和scala版本2.11我使用放心scala支持测试路线,但我得到 经过研究,我发现Junit导致了rest assured hamcrest matcher NoSuchMethodError的问题,hamcrest 1.3 这是构建。sbt文件内容 这是异常日志 请帮助说明导致异常的原因
本文向大家介绍易语言的超文本浏览框实现,包括了易语言的超文本浏览框实现的使用技巧和注意事项,需要的朋友参考一下 添加一个按钮 页面内可以点击跳转 出现错误 解决办法 实验效果
问题内容: 我有一个语言代码列表(如“ en”,“ es” …),我需要用以下语言显示: 是否有任何内置API可以在Android中获取这些文件,还是我应该自己映射它们? 问题答案: 该班有一个方法,这个:作为文档说: 返回此语言环境的语言名称,本地化为 。确切的输出形式取决于此语言环境是否对应于特定的语言,脚本,国家/地区和变体。 因此,您可以像这样获得语言环境的语言名称:
本文向大家介绍易语言信息框添加图标的方法,包括了易语言信息框添加图标的方法的使用技巧和注意事项,需要的朋友参考一下 易语言信息框的制作很简单,但是怎么修改信息框的图标呢?下面小编为大家解决问题 1、打开易语言,选择Windows程序窗口 2、这里只需要一个按钮就足够了,如果需要其它的可以自己添加上去。 3、双击按钮进入编程界面,我们在这里编写程序。 4、然后输入一个信息框,这里的"0"的位置就是图