从选择查询中获取的数据不正确

时间:2018-01-22 12:54:49

标签: java sql

有人可以查看我的代码

此查询从address_id获取两个值postcodetable1。这里 AddressID类有两个变量postcode(字符串)和address_id(整数):

@Select("SELECT address_id,postcode FROM table1 WHERE custom_field_1 = #{caseid}")
public List<AddressID> getAddressIdPostCodeList(String caseid);

以下是AddressID如何查看 AddressID.java

  private int addressId;

  private String postcode;

    //getters and setters of Pstcode and addressId

    @Override
        public String toString() {
            return "PostCode : " + this.postcode;

        }

执行此查询时,我将address_id的值设为0且需要postcode。虽然DB的值address_id不为零。我的代码失败了吗?

这是我调用的主要方法

 List<AddressID> addresses = new ArrayList<>();
 addresses = mainClassObject.getAddressIdPostCodeList(address.getcaseId());

理想情况下,地址对象应同时包含address_idpostcode。我得到了两个值,但address_id我得到0并且postcode的值正确。

2 个答案:

答案 0 :(得分:0)

由于我不能发表评论,因为我没有50个声誉,我不得不在这里写,从你发布的代码很难说,给你一个答案我需要更多关于getAddressIdPostCodeList()做什么的细节,因为你说数据库中的数据没有任何错误,错误必须在方法getAddressIdPostCodeList()中和/或你如何处理查询的resultset

编辑:使用Oracle JDBC驱动程序的解决方案

由于我不知道如何使用Mybatis,因此使用JDBC来解决问题。

使用JDBC连接到Oracle DB这里有一个简单的教程:

1。首先,您需要从Oracle下载de JDBC驱动程序,具体取决于您的数据库版本(11g,12c,10g),驱动程序名为{{1}其中X是驱动程序的版本号

2。下载驱动程序后,需要将ojdbcX.jar添加到项目中,如果您使用的是 Netbeans IDE ,则可以将其添加为这个:

Adding JAR to NetBeans project

如果您使用的是Eclipse,则可以使用以下链接查看如何添加.jar文件:How to import a jar in Eclipse

3。在添加.JAR非常简单之后,您只需要使用您的凭据连接到数据库,以下是如何执行此操作的示例:

.JAR

有关如何连接的更多信息,您可以查看oracle.jdbc Class OracleDriver文档

4. 在连接完成后非常简单,下面是一个简短的代码示例来获得您想要的结果,您需要使用您的连接详细信息修改它,并且您认为合适,因为我做了几个假设,这段代码只是一个例子:

<强> Main.Java

Connection connection = null;
            try {
                    Class.forName("oracle.jdbc.driver.OracleDriver");
                    connection = DriverManager.getConnection(
                "jdbc:oracle:thin:@localhost:1521:xe", "system", "password");                    } catch (Exception ex) {
                    ex.printStackTrace();
                }

<强> AddressID.java

public class Main {

    public static void main(String[] argv) {

           List<AddressID> addresses;
           SQLConnect conex= new SQLConnect();
           String caseid="the id you want";
           addresses=conex.getAddressIdPostCodeList(caseid);
}

<强> SQLConnect.Java

public class AddressID {

private String addressId;
private String postcode;     
}

答案 1 :(得分:0)

I did forgot to wtite my result query which is actually binding data fetched 
from select query to the AddressId class..

@Results(id = "result", 
value = {
    @Result(property = "addressId", column = "address_id"),
    @Result(property = "postcode", column = "postcode")
        }
        )