从JavaBean准备查询字符串

从JavaBean准备查询字符串,java,Java,我很想知道有没有更好的方法来准备查询字符串,而不必检查来自JavaBean的空值 我有以下带有属性的JavaBean public class Employee{ private String name; private String address; //setters and getters i am not mention here } 假设取name作为值,address not have value意味着null。我想准备如下查询字符串

我很想知道有没有更好的方法来准备查询字符串,而不必检查来自JavaBean的空值

我有以下带有属性的JavaBean

    public class Employee{

    private String name;

    private String address;

    //setters and getters i am not mention here

    }
假设取name作为值,address not have value意味着null。我想准备如下查询字符串:

    update table test where name='value from property' where xxx=?
问候,


chakri

有一种动态触发查询的方法。您可以先检查空值,然后根据该值选择要在db上触发的查询。

使用生成器模式来构造SQL。这并没有什么神奇之处:您必须编写每个构建器类来构造insert、update、select等。然而,最后您有一个很好的逻辑封装。下面是你使用它的方法

String sql = new EmployeeUpdateBuilder()
    .whereName("Jeff")
    .valueAddress("123 Main Street")
    .build();
要实现的代码很简单,实际上有点忙,但结果很好。如果您打算为不同的对象类型编写一系列这些命令,那么您可以为每种SQL命令类型(insert、select等)的基类考虑很多因素

另一个选择是对构建器进行泛化。你最终会有这样的用法

String sql = new UpdateBuilder()
    .table("employees")
    .where("name", "Jeff")
    .value("address", "123 Main Street")
    .build();

我建议你使用一个ORM,比如Hibernate,这样你就不必自己做了。这是正确的Marcelo。但是我们已经有了只执行2个查询的组件。所以我不需要所有Hibernate的东西。对不起,我不明白你的意思。我想根据属性名和它的值动态准备查询。我对Vimal Bera答案的解释是,如果你用引号将要与xxx比较的值放在一个字符串中,你最坏的情况是将空字符串发送到数据库,而不是无效的SQL。@user2680017我根据您的要求更新了我的答案。问我你是否需要更多的澄清。谢谢,这是任何人都能做的第一件事。hibernate是如何做类似的事情的?Jeffery,我必须做空字符串和空字符串检查的每个属性。我想避免这种情况。无论属性有什么,都没有空字符串或空字符串。我必须构造查询字符串。因此,将检查构建到你的查询生成器中。没有魔法,一定要有东西来检查。