突然发现Query.setParameterList原来是如此:
有两种参数的重载方式:
/**
* Bind multiple values to a named query parameter. The Hibernate type of the parameter is
* first detected via the usage/position in the query and if not sufficient secondly
* guessed from the class of the first object in the collection. This is useful for binding a list of values
* to an expression such as <tt>foo.bar in (:value_list)</tt>.
* @param name the name of the parameter
* @param vals a collection of values to list
*/
public Query setParameterList(String name, Collection vals) throws HibernateException;
/**
* Bind multiple values to a named query parameter. This is useful for binding
* a list of values to an expression such as <tt>foo.bar in (:value_list)</tt>.
* @param name the name of the parameter
* @param vals a collection of values to list
* @param type the Hibernate type of the values
*/
public Query setParameterList(String name, Object[] vals, Type type) throws HibernateException;
它们都是用在hql/sql语句 in (...)情况下的, list或object[]会组成in集合, 并不是本以为的变成:
set(0, para1);
set(1, para2);
...
另外有一个方法,需要注意了:
/**
* Bind values and types to positional parameters.
*/
public Query setParameters(Object[] values, Type[] types) throws HibernateException;
这里又不是用在in了,而是顺序组装参数:
Set(0, param1);
Set(1, param2);
...
分享到:
相关推荐
query.setParameterList("categories", categories); query.setParameter("specialId", 42); ``` ### 排序与多规则排序 HQL支持`order by`子句进行排序。可以指定多个排序规则,如`asc`(升序)和`desc`(降序)。...
query.setParameterList(string, (Collection) obj); } else { query.setParameter(string, obj); } } } return query; } ``` 在上面的代码中,我们使用setParameterList方法来传递集合参数。这将确保参数的...
query.setParameterList("groups", groups); ``` 另外,HQL也支持子查询,可以嵌套在`from`、`where`、`select`等子句中,以实现更复杂的逻辑。例如,找出所有拥有最多项目的项目经理: ```java query = session....
query.setParameterList("name", names); ``` 2. **使用`between`关键字**:对于连续范围的模糊查询,可以使用`between`。例如,查询年龄在20到30之间的用户: ```java query.setParameter("ageStart", 20); query...
query.setParameterList("orderIds", orderIdsList); List<User> usersWithOrders = query.list(); ``` 在这里,`orderIdsList`是一个包含我们要查询的订单ID的List,通过`setParameterList`方法,我们可以将这个...
query.setParameterList("courseStudents", course.getStudents().stream().map(Student::getId).collect(Collectors.toList())); List<Student> result = query.list(); ``` 通过这个双向多对多关系的教程,你...
query.setParameterList("ids", ids); return query.executeUpdate(); } }); } ``` 在这段代码中,我们定义了一个`bulkDelete`方法,接受一个`Object[]`类型的参数`ids`,代表待删除记录的ID集合。`queryString...
query.setParameterList("ids", ids); ``` 这将返回id在列表中的所有实体。 ### 4. 传参方式 除了集合参数,HQL还有多种传参方式: - ** 占位符参数 **:`from EntityName e where e.property = ?1`,然后使用`...
query.setParameterList("ids", userIds); List<User> users = query.list(); ``` 而在MyBatis中,可以在XML配置文件中定义SQL: ```xml <select id="selectUsersByIds" parameterType="java.util.List" ...
若要查询id在特定集合中的用户,可以使用`IN`操作符,如`FROM User where id IN (:ids)`,并使用`.setParameterList("ids", new Object[]{1,3,4})`传递数组。 9. **使用命名查询**: 命名查询将HQL语句写在`.hbm....
3. **修改操作**:对于更新,我们可以创建一个`updateByQuery`方法,接收HQL更新语句和参数,利用`createQuery().setParameterList()`设置参数,然后调用`executeUpdate()`执行更新。 4. **删除操作**:类似地,...
.setParameterList("ids", new Object[]{1, 21, 31, 41, 51, 61, 71, 81, 91}) .list(); for (Iterator iter = list.iterator(); iter.hasNext();) { Student s = (Student) iter.next(); System.out.println(s...
<sql-query name="sqlQuery"> select distinct p.* from E_ROLE_PROFILE_MAP map, E_PROFILES p, E_ROLE e where map.PROFILE_ID = p.ID and map.ROLE_ID = e.ID and e.ID in (:roleIdList) order by p.ID ...
本文将详细介绍Hibernate中的几种常见查询方式,包括`get()`与`load()`的区别以及如何使用HQL(Hibernate Query Language)、Criteria API进行查询。 #### 1. `get()`与`load()`方法 `get()`和`load()`都是...
这个方法用于设置HQL查询中的参数,它遍历Map,根据值的类型(Collection、Object[] 或单一对象)调用相应的`setParameter`或`setParameterList`方法。 - **`getcountHql(String hql)`** 这个方法用于构建统计...
Query接口用于执行HQL(Hibernate Query Language)查询,提供List、uniqueResult、setString、setParameterList等方法。 5. **POJO(Plain Old Java Object)** POJO是与Hibernate关联的Java对象,有瞬时态、...
HQL支持命名参数和位置参数,例如上面的例子展示了如何通过`createQuery()`创建HQL查询,并使用`setParameter()`或`setParameterList()`设置参数。`uniqueResult()`用于获取单个结果,`list()`则用于获取结果集。 3...