EntityManager 数据查询

//添加注解
@PersistenceContext
private EntityManager em;

//一般形式, 与数据库表关联的bean
@Entity
@Table(name = "c_s_appagent")
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
@Data
@NoArgsConstructor
@AllArgsConstructor
public class AppAgent {}

//查询方法
@SuppressWarnings("unchecked")
public List<AppAgent> queryBySql(String execsql, Map<String, String> params) {
Query query = null;
query = em.createNativeQuery(execsql, AppAgent.class);
if(params!=null) {
Iterator<Entry<String, String>> it = params.entrySet().iterator();
while(it.hasNext()) {
Entry<String, String> entry = it.next();
query.setParameter(entry.getKey(), entry.getValue());
}
}

List<AppAgent> ret = query.getResultList();
return ret;
}
//

//映射为普通的pojo对象(无table关联)
@Data
@NoArgsConstructor
@AllArgsConstructor
public class SiteRouteDto {}

//查询方法
@SuppressWarnings("unchecked")
public List<SiteRouteDto> queryBySql(String sql, Map<String, String> params) {
Query query = null;
query = em.createNativeQuery(sql);
if(params!=null) {
Iterator<Entry<String, String>> it = params.entrySet().iterator();
while(it.hasNext()) {
Entry<String, String> entry = it.next();
query.setParameter(entry.getKey(), entry.getValue());
}
}
List<SiteRouteDto> ret = query.unwrap(org.hibernate.Query.class).setResultTransformer(Transformers.aliasToBean(SiteRouteDto.class)).list();
return ret;
}

//

//返回List<String>
public List<String> GetReceiveSiteRetrySend() {
Query query = null;
String sql = "SELECT DISTINCT Guid from run_s_sendfailure where RetryCount<=60 and McBackup='N' ORDER BY id LIMIT 0,20";

query = em.createNativeQuery(sql);
List<?> objList = query.getResultList();
List<String> ret = new ArrayList<String>(objList.size());
for(Object obj : objList) {
ret.add(obj.toString());
}
return ret;
}

//返回统计数据
public long getFileCnt(List<Integer> agentList, String earlyStartTime, String lastEndTime) {

String sql = "select count(1) from run_s_fileapproveinfo where 1=1";

String sourceIdQuery = " and sourceId in (";
if (agentList != null && agentList.size() > 0) {
for (int i = 0; i < agentList.size(); i++) {
sourceIdQuery += "'" + agentList.get(i) + "'";
if (i < agentList.size() - 1) {
sourceIdQuery += ", ";
}
}
sourceIdQuery += ") ";
sql += sourceIdQuery;
}

if (!Strings.isNullOrEmpty(earlyStartTime) && !Strings.isNullOrEmpty(earlyStartTime.trim())) {
sql += " and submitTime >='" + earlyStartTime +"'";
}

if (!Strings.isNullOrEmpty(lastEndTime) && !Strings.isNullOrEmpty(lastEndTime.trim())) {
sql += " and submitTime <'" + lastEndTime +"'";
}

Query query = null;
query = em.createNativeQuery(sql);

List<?> ret = query.getResultList();
Object result = ret.get(0);
int cnt = Integer.parseInt(result.toString());
return cnt;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 Quarkus 中使用 Hibernate ORM 和 JPA 来管理实体,可以通过注入 EntityManager 对象来查询数据。如果你有多个数据源并且想要指定数据源来查询数据,可以使用 @PersistenceContext 注解来指定要使用的数据源。 假设你有两个数据源,一个名为“primary”、另一个名为“secondary”,可以分别创建两个 EntityManager 对象,并通过 @PersistenceContext 注解来指定要使用的数据源。例如: ``` @ApplicationScoped public class MyService { @PersistenceContext(unitName = "primary") EntityManager primaryEntityManager; @PersistenceContext(unitName = "secondary") EntityManager secondaryEntityManager; public List<MyEntity> getAllEntitiesFromPrimaryDataSource() { return primaryEntityManager.createQuery("SELECT e FROM MyEntity e", MyEntity.class) .getResultList(); } public List<MyEntity> getAllEntitiesFromSecondaryDataSource() { return secondaryEntityManager.createQuery("SELECT e FROM MyEntity e", MyEntity.class) .getResultList(); } } ``` 在上面的例子中,我们创建了两个 EntityManager 对象,分别命名为“primaryEntityManager”和“secondaryEntityManager”,并使用 @PersistenceContext 注解来指定它们要使用的数据源。然后,我们定义了两个方法来查询这两个数据源中的“MyEntity”实体。 需要注意的是,在你的应用程序配置文件中,你需要为每个数据源配置一个对应的 Hibernate 配置文件,并指定不同的“hibernate.ejb.persistenceUnitName”属性值来区分它们。例如: ``` quarkus.hibernate-orm."primary".packages=my.package.entities quarkus.hibernate-orm."primary".datasource=primary quarkus.hibernate-orm."primary".persistence-unit-name=primary-persistence-unit quarkus.hibernate-orm."secondary".packages=my.package.entities quarkus.hibernate-orm."secondary".datasource=secondary quarkus.hibernate-orm."secondary".persistence-unit-name=secondary-persistence-unit ``` 在上面的例子中,“primary”和“secondary”是数据源的名称,“my.package.entities”是实体类所在的包名,“primary-persistence-unit”和“secondary-persistence-unit”是对应的 Hibernate 配置文件中的“hibernate.ejb.persistenceUnitName”属性值。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值