普元EOS-基于CriteriaEntity进行数据查询

1 前言

普元EOS内置了一系列数据库的操作类,本文介绍其中的一个类 CriteriaEntity的使用方法。

CriteriaEntity是进行组织数据库查询条件的类,基于该类配合DataObject,实现对数据库的查询。

2 CriteriaType类的实例化

要利用Criteria进行查询,先要实例化CriterialType类。

实例化代码如下:

import com.eos.das.entity.criteria.CriteriaType;
import com.eos.spring.dao.CriteriaBuilder;

CriteriaBuilder cbuild1 = new CriteriaBuilder( 实体名称 );

参数实体名称,是普元EOS创建的数据实体的名字,关于EOS的数据实体的概念可以看《普元EOS-数据实体、SDO接口和实现类、DataObject都是什么?》,可以理解为图形化的Entity类,在MyBatis中也有Entity类的。

3 根据 field = value 的条件查询

在查询数据库的时候,会有类似下面的sql语句

select * from t_user_devops where afc_user_id = '1'

数据表是 t_user_devops ,查询条件是 afc_user_id 字段值等于1 

利用criteria查询代码如下

CriteriaBuilder cbuild1 = new CriteriaBuilder( TUserDevops.QNAME );
cbuild1.eq("afcUserId", "1");
CriteriaType ct1 = cbuild1.build();

TUserDevops dd2 = DatabaseDao.getInstance(数据源名称)
                .<TUserDevops>getEntityByCriteria(ct1);

简单解释一下:

基于CriteriaBuilder类构件查询条件,最后build生成 CriteriaType对象,然后利用DatabaseDao的getEntityByCriteria 方法查询返回的结果。

CriteriaBuilder初始化的时候,要传递参数 entityName,即数据实体的名称,EOS的数据实体有一个完整的名字,类似: 

com.primeton.eos.KgptDemo.model.kgptdemo.UserDataset.TUserDevops

这个字符串,在SDO接口的QNAME 字段中定义了,代码如下:

public interface TUserDevops extends DataObject {

	public String QNAME = "com.primeton.eos.KgptDemo.model.kgptdemo.UserDataset.TUserDevops";

	public Type TYPE = TypeHelper.INSTANCE.getType("com.primeton.eos.KgptDemo.model.kgptdemo.UserDataset", "TUserDevops");

eq方法:等于( = )方法,参数是字段名和字段值。 eq("afcUserId", "1")等同于SQL语句中的 where afc_user_id = '1'  。 这里注意,第一个参数是数据实体的字段名,而不是数据表的字段名。

build方法:该方法生成CriteriaType对象。

DatabaseDao.getInstance(数据源名称):这个方法实例化了DatabaseDao。参数数据源名称对应user-config.xml中定义的数据源名称。可以不填,不填写的话就是采用默认的default数据。

<TUserDevops>getEntityByCriteria方法:该方法根据条件查询一条数据。泛型语法决定了返回的类型是TUserDevops的。

写在最后

Criteria的使用技巧,我会不断完善到这个文章中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/871809.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

七个电脑数据恢复方法:教你如何恢复电脑上误删除的文件

电脑已成为我们日常生活和工作中不可或缺的一部分&#xff0c;存储着无数珍贵的照片、文档、视频以及各类重要数据。今天来和大家分享一个我们都可能遇到的问题&#xff1a;如何恢复电脑上误删除的文件&#xff1f;随着日常操作的频繁&#xff0c;误删除文件的情况时有发生。 …

vue3【组件封装】日历 (默认标注今日,可选择日期,可标注日期,可切换月份,样式仿 Win11)

效果预览 技术要点 获取每个月最后一天 下个月的第0天,自动会被解析为本月的最后一天 let lastDay = computed(() => new Date(year.value, month.value, 0).getDate());flex 布局末行左对齐 最靠谱的方式是想办法将末行缺失元素填满 本范例中,因星期固定7列,按每月最…

在控件graphicsView中实现绘图功能(二)

目录 前言&#xff1a;基础夯实&#xff1a;1.创建 QGraphicsScene 和 QGraphicsView2. 在 QGraphicsScene 中添加椭圆3. 渲染和显示4. 推荐学习本文之前查看的链接&#xff1a; 效果展示&#xff1a;实现功能&#xff1a;遇到问题&#xff1a;核心代码&#xff1a;仓库源码&am…

OpenCV几何图像变换(6)计算反转仿射变换函数invertAffineTransform()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 反转一个仿射变换。 该函数计算由 23 矩阵 M 表示的逆仿射变换&#xff1a; [ a 11 a 12 b 1 a 21 a 22 b 2 ] \begin{bmatrix} a_{11} & a…

检测到目标URL存在http host头攻击漏洞

漏洞描述 修复措施 方法一&#xff1a; nginx 的 default_server 指令可以定义默认的 server 去处理一些没有匹配到 server_name 的请求&#xff0c;如果没有显式定义&#xff0c;则会选取第一个定义的 server 作为 default_server。 server { …

缓存实现方式

缓存是一个常见的话题&#xff0c;因为它对于提高应用程序性能至关重要。缓存是一种存储数据的临时地方&#xff0c;以便快速访问数据&#xff0c;减少对原始数据源&#xff08;如数据库或文件系统&#xff09;的访问次数&#xff0c;从而提高应用程序的响应速度和吞吐量。 Jav…

性能测试全解

世界上没有陌生人&#xff0c;只有还没认识的朋友 一&#xff0e;性能测试的意义 由于软件系统的性能问题而引起严重后果的事件比比皆是&#xff0c;下面列举几个案例 (1)2007年10月&#xff0c;北京奥组委实行2008年奥运会门票预售&#xff0c;一时间订票官网访问量激致系统…

Ciallo~(∠・ω・ )⌒☆第二十篇 入门mysql 数据库

要入门MySQL数据库&#xff0c;首先需要了解数据库的基本概念和原理。MySQL是一种广泛使用的开源关系型数据库管理系统&#xff0c;它能够处理大量的数据&#xff0c;并提供了多种功能。 一、创建数据库 连接到MySQL后&#xff0c;你可以使用SQL语句来创建数据库。例如&#x…

libevent之android与鸿蒙编译过程

背景 最近基于libevent开发了一个端侧的缓存代理库&#xff0c;先是基于macOS编译开发的&#xff0c;基本0问题&#xff0c;后来移植到鸿蒙与android时遇到一些编译链接问题。 libevent版本如下&#xff1a; 软件版本号libevent-2.1.8 android编译 编译环境 android studio…

docker部署postgresSQL 并做持久化

先安装docker&#xff0c;安装docker 方法自行寻找方法 然后安装pgsql 拉取镜像 docker pull registry.cn-hangzhou.aliyuncs.com/qiluo-images/postgres:latest运行容器 docker run -it --name postgres --privileged --restart always -e POSTGRES_PASSWORDYo5WYypu0mCCh…

input[type=checkbox]勾选框自定义样式

效果图&#xff1a; <template> <input class"rule-checkbox" type"checkbox" checked v-model"isChecked" /> </template><script setup lang"ts"> import { ref } from vue; const isChecked ref(); </…

Python3:多行文本内容转换为标准的cURL请求参数值

背景 在最近的工作中&#xff0c;经常需要处理一些接口请求的参数&#xff0c;参数来源形式很多&#xff0c;可能是Excel、知识库文档等&#xff0c;有些数据形式比较复杂&#xff0c;比如多行或者包含很多不同的字符&#xff0c;示例如下&#xff1a; **客服质检分析指引** …

性价比运动耳机有哪些?五大性价比运动耳机推荐!

作为一名资深的数码爱好者&#xff0c;我一直对各种新型耳机产品保持着浓厚的兴趣。最近&#xff0c;我因为很多运动爱好者都在询问什么耳机是比较适合运动的时候使用的&#xff0c;看了市面上的产品&#xff0c;开放式耳机无疑是一个不错的选择&#xff0c;它因为采用人体工学…

vue3+ts+vant4 列表下拉刷新+分页加载

效果图 主要代码&#xff1a; <van-pull-refreshv-model"refreshing"refresh"handleRefresh"pulling-text"下拉释放刷新"loosing-text"下拉释放刷新"loading-text"加载中"><van-listv-model:loading"loading…

WPS回应“崩了”:提供15天会员补偿,另有新羊毛,你还不来薅?

近期&#xff0c;“WPS崩了”这一话题在时隔两个月后&#xff0c;再次因多名用户反馈软件使用问题而登上微博热搜。 WPS官方微博随后发布消息称&#xff0c;经过工程师的紧急修复&#xff0c;WPS服务已经恢复正常。 为了补偿用户&#xff0c;在8月22日0点至24点期间&#xff…

【软件测试】软件测试岗位会越来越少吗?

我的整体意见是测试岗位不会变少&#xff0c;反而相对于其他岗位会变的更重要一些。 首先纠正一个非常非常错误的观念。测试和测试开发是两个岗位&#xff1f;No&#xff0c;不是的。测试开发是属于测试的。 测试开发只不过是使用类似于开发的技术和能力&#xff0c;来达到测…

CAPL如何实现在网络节点中添加路由Entry

其实不只是CANoe的网络节点,所有设备的应用程序如果要通过Socket套接字发送报文,在网络层都需要根据路由表里配置的路由条目选择发送路径。这个路由条目可以是静态配置,也可以是自动添加。 如果CANoe的网络节点添加一个网络接口,配置IP地址和子网掩码: 说明此网络节点在1…

C++ 设计模式——策略模式

策略模式 策略模式主要组成部分例一&#xff1a;逐步重构并引入策略模式第一步&#xff1a;初始实现第二步&#xff1a;提取共性并实现策略接口第三步&#xff1a;实现具体策略类第四步&#xff1a;实现上下文类策略模式 UML 图策略模式的 UML 图解析 例二&#xff1a;逐步重构…

Java Web —— 第七天(Mybatis案例 员工管理2)

新增员工 EmpController类 PostMappingpublic Result save(RequestBody Emp emp){log.info("新增员工操作,emp:{}",emp);empService.save(emp);return Result.success();} EmpServiceImpl实现类 //新增员工Overridepublic void save(Emp emp) {//补充基础属性 创…

台球助教在线预约小程序源码开发:打造便捷高效的台球学习新体验

在当今快节奏的生活中&#xff0c;台球作为一项集休闲、竞技与社交于一体的运动&#xff0c;受到了越来越多人的喜爱。然而&#xff0c;对于初学者而言&#xff0c;想要快速提升技能&#xff0c;往往需要专业的指导和陪练。传统的台球教练预约方式往往存在信息不对称、预约流程…