在使用原始查询时选择比较 ormlite 中的两列值的行

Posted

技术标签:

【中文标题】在使用原始查询时选择比较 ormlite 中的两列值的行【英文标题】:Select rows comparing two column value in ormlite while using raw query 【发布时间】:2018-08-20 05:48:24 【问题描述】:

我有以下数据库表

@DatabaseTable(tableName = "Order_Details")
public class DB_OrderDetails 

@DatabaseField(generatedId = true)
private int id;

@DatabaseField()
private int order_id_from_order_table;

@DatabaseField()
private String medicine_code;

@DatabaseField()
private String medicine_name;

@DatabaseField()
private String medicine_type;

@DatabaseField()
private int number_of_units_ordered;

@DatabaseField()
private String generic_name;

@DatabaseField()
private String manufacturer_name;

@DatabaseField()
private double ordering_cost;
... 

我正在使用 ormlite 进行本地数据库操作。我想得到结果

SELECT * FROM Order_Details WHERE (medicine_code='xxxx' AND manufacturer_name='yyyy')

又想得到

中返回的结果
List<DB_OrderDetails> 

有人可以给我建议吗?

【问题讨论】:

【参考方案1】:

使用 Where 类的对象来构建您的查询。

List<DB_OrderDetails> list;
try 
        Dao<DB_OrderDetails, String> dbOrderDetailsStringDao = dbHelper.getOrderDetailsDao();
        QueryBuilder<DB_OrderDetails, String> queryBuilder = dbOrderDetailsStringDao.queryBuilder();

        Where where = queryBuilder.where();
        where.eq("medicine_code", "xxxx");
        where.and();
        where.eq("manufacturer_name", "yyyy");

        PreparedQuery<DB_OrderDetails> preparedQuery = queryBuilder.prepare();
        list = dbOrderDetailsStringDao.query(preparedQuery);
 catch (SQLException e) 
        e.printStackTrace();

【讨论】:

我还从您的答案中编辑了一部分以符合我的要求

以上是关于在使用原始查询时选择比较 ormlite 中的两列值的行的主要内容,如果未能解决你的问题,请参考以下文章

Excel宏比较两个工作表中的两列并插入行值

查询嵌套查询结果中的两列

ORMLite 对字段子字符串的原始查询

如何通过比较两个表中的两列来更新表中的列

使用单个查询重命名 netezza 中的两列

在 Oracle 存储过程中比较 IF 语句中的两列