java - Spring/Hibernate Select Count(*) 查询自定义?

标签 java mysql spring hibernate

请帮帮我,

这是我的 DAO,它为我提供了正确的行数,但我想添加一些条件。

@Override
public int getAllRows(SearchForm searchForm) {
    logger.info("SearchForm Detail :: " + searchForm);
    Session session = this.sessionFactory.getCurrentSession();
    Query query = (Query) session.createQuery(" select count(*) from EmployeeVO");
    int rows = ((Number) query.uniqueResult()).intValue();
    logger.info("Number of Rows :: " + rows);
    return rows;
}

这是我的 MySQL 查询:

选择 名字

来自 员工

在哪里 first_name LIKE '%ab%'

与 工资 > 0 且工资 < 100000;

最佳答案

Query query = (Query) session.createQuery("SELECT first_name FROM employees WHERE first_name LIKE ? AND salary > ? and salary < ?");
query.setParameter(0, '%ab%');
query.setParameter(1, 0);
query.setParameter(2, 100000);

您还可以使用命名参数,如下所示:

Query query = (Query) session.createQuery("SELECT first_name FROM employees WHERE first_name LIKE :first_name AND salary > :min_salary and salary < :max_salary");
query.setParameter(first_name, '%ab%');
query.setParameter(min_salary, 0);
query.setParameter(max_salary, 100000);

另一种替代方法是使用 Hibernate Criteria API:

Criteria criteria = session.createCriteria(Employee.class);
criteria.add(Restrictions.eq("first_name", "%ab%"));
criteria.add(Restrictions.lt("salary ", 0));
criteria.add(Restrictions.gt("salary ", 100000));
List list = criteria.list();

关于java - Spring/Hibernate Select Count(*) 查询自定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44689428/

相关文章:

java - hibernate -Eclipse

java - 为什么拦截器会运行三次?

java - 如何通过java代码复制MySQL中新建数据库的数据库结构?

java - Android Canvas drawRect函数不显示绘画阴影

mysql - 有没有办法从每个查询中获取 2 行?

mysql - 简单的 SQL 查询错误

spring - Grails中Spring WebFlow的继承和子流

java - 分阶段加载 spring 上下文

mysql - Mongo更新查询相当于mysql中

java - Spring ApplicationContext 和 BeanFactory