gpt4 book ai didi

java - 心理 bean : Using OR instead of AND to load a list of beans

转载 作者:太空宇宙 更新时间:2023-11-04 07:57:00 29 4
gpt4 key购买 nike

我正在加载属于城市 235 的男性用户列表。好的,这很简单。但现在我如何加载属于城市 235 或 236 的男性用户列表?

BeanManager beanManager = new BeanManager();
User userProps = PropertiesProxy.create(User.class);
BeanConfig userConfig = new BeanConfig(User.class, "Users")
.pk(userProps.getId(), DBTypes.AUTOINCREMENT)
.field(userProps.getUsername(), DBTypes.STRING)
.field(userProps.getGender(), DBTypes.ENUMID.from(Gender.class))
.field(userProps.getCity().getId(), "city_id", DBTypes.INTEGER);
beanManager.addBeanConfig(userConfig);

BeanSession session = new MySQLBeanSession(beanManager, conn);
User u = new User();
u.setGender(Gender.MALE);
u.setCity(new City(235));

List<User> users = session.loadList(u, lim(250));

System.out.println("Found: " + users.size());

但现在我想在我的 where 子句中添加一个 OR 条件!我该怎么做?

我正在使用this framework .

最佳答案

对于任何 ORM,最终您都必须编写查询。就像使用 group by、子查询、左连接等的查询一样,如果没有 SQL,就无法执行您想要的操作。引用JOINS举个例子。下面是您如何进行查询:

PreparedStatement stmt = null;
ResultSet rset = null;

try {

StringBuilder sql = new StringBuilder(1024);
sql.append("select ");
sql.append(session.buildSelect(User.class));
sql.append(" from Users");
sql.append(" where gender = ? and (city_id = ? or city_id = ?)");

stmt = prepare(conn, sql.toString(), Gender.MALE.getId(), 235, 236); // varargs for params (from SQLUtils)

rset = stmt.executeQuery();

List<User> users = new LinkedList<User>();

while(rset.next()) {
User u = new User();
session.populateBean(rset, u);
users.add(u);
}

System.out.println("Number of users loaded: " + users.size());

} finally {
close(rset, stmt, conn); // from SQLUtils
}

注意:您的代码中缺少性别列的映射,因此我假设它是 ENUMID并且 Gender 枚举有一个 getId() 方法。否则,如果您使用 ENUMVALUE,请将 Gender.MALE.getId() 更改为 Gender.MALE.toString()

关于java - 心理 bean : Using OR instead of AND to load a list of beans,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13466435/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com