当前位置: 首页 > news >正文

普元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.mrgr.cn/news/4446.html

相关文章:

  • 【Java】——Java程序实现学生成绩输入与等级划分
  • Nginx服务优化与防盗链
  • Java语言程序设计——篇十六
  • 企业人力资源管理建设方案和系统源码(岗位、组织、招聘、合同、绩效、五险、考勤、薪资、考试培训、人才发展)
  • 普元EOS-利用热更新(热启动)提高开发效率
  • 【JavaEE】MyBatis 实战指南:从 JDBC 到高效数据库操作的进阶教程
  • docker修改数据目录
  • 【Element Ui】在 vxe-table 中使用 el-cascader,退出编辑状态显示 label 值
  • 【bash】设置shell为英文输出
  • C语言实现Reactor
  • Python爬虫案例一:获取古诗文并按用户输入的作者名进行数据保存
  • 1088:分离整数的各个数
  • 【Qt笔记】Qt界面显示时间
  • 【C++二分查找 前缀和】1658. 将 x 减到 0 的最小操作数
  • go语言基础之goroutine与channel经典练习题
  • 【Linux —— 线程互斥】
  • 数据库进阶 - 可串行化隔离级别的底层原理
  • ubuntu20 vmware硬盘空间不够,进行扩容,实操成功!
  • 个人查找下载Begell House数据库文献的方法
  • 服务优雅上下线优雅停机