有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

从select查询中获取的java数据不正确

有人可以检查我的代码吗

此查询正在从table1获取两个值address_idpostcode。在这里 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我得到了postcode的0和正确值


共 (2) 个答案

  1. # 1 楼答案

    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")
            }
            )
    
  2. # 2 楼答案

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

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

    因为我不知道如何使用Mybatis,这里有一个使用JDBC的解决方案

    要使用JDBC连接到OracleDB,这里有一个简单的教程:

    1首先,您需要从Oracle下载deJDBC驱动程序,具体取决于您的DB版本(11g、12c、10g),驱动程序名为ojdbcX.jar,其中X是驱动程序版本的编号

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

    Adding JAR to NetBeans project

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

    3添加.JAR后非常简单,您只需要使用凭据连接到DB,下面是一个如何操作的示例:

    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();
                    }
    

    有关如何连接的详细信息,请查看oracle.jdbc Class OracleDriver文档

    4在连接变得非常简单之后,这里有一个简短的代码示例以获得您想要的结果,您需要使用您的连接详细信息对其进行修改,正如您认为合适的那样,因为我做了一些假设,此代码只是一个示例:

    Main。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);
    }
    

    地址ID。java

    public class AddressID {
    
    private String addressId;
    private String postcode;     
    }
    

    SQLConnect。Java

    public class SQLConnect {
    
    
       public static Connection connection;
    
                public SQLConnect (){
                    createConnection();    
                  }
    
    
                public void CreateConnection(){
                 try {
                        Class.forName("oracle.jdbc.driver.OracleDriver");
                        connection = DriverManager.getConnection(
                    "jdbc:oracle:thin:@localhost:1521:xe", "system", "password")
                        } catch (Exception ex) {
                        ex.printStackTrace();
                    } 
                }
    
    
                public void closeConnection(){
                    if(connection!=null){
                        try {
                            connection.close();   
                        } catch (SQLException ex) {
                             ex.printStackTrace();
                        }
                    }
    
    
                public ResultSet ExecuteQuery(String queryTXT) throws SQLException{
    
                 Statement query = connection.createStatement();
                 ResultSet table=query.executeQuery(queryTXT);
                 return table;                   
                }
    
    
                public List<AddressID> getAddressIdPostCodeList(String caseid) throws SQLException{
                 List<AddressID> addresses = new ArrayList <> ();
                 ResultSet table=ExecuteQuery("SELECT address_id,postcode FROM table1 WHERE custom_field_1 ='"+caseid+"';");
                  while (table.next()) {
                     AddressID aux;
                     aux.addressId=table.getString(1); 
                     aux.postcode=table.getString(2);                           
                     addresses.add(aux); 
                  }       
                 return addresses;                 
                }
     }