• 締切済み

ibatis select複数件の受入方について

SqlMap.xmlにて </select> <select id="getDept" resultClass="blog.Dept"> SELECT * FROM blog </select> Deptにて; public class Dept { private int id[]; public int[] getId() { return id; } public void setId(int[] id) { this.id = id; } blogArticle.javaにて public void load()throws Exception { SqlMapClient sqlMap = MyAppSqlConfig.getSqlMapInstance(); sqlMap.startTransaction(); Dept dept = (Dept)sqlMap.queryForObject("getDept"); sqlMap.commitTransaction(); } 以下のエラーが出てしまいました No type handler could be found to map the property 'id' to the column 'id'. One or both of the types, or the combination of types is not supported. . deptのところを private int id[]; public int[] getId() { return id; } public void setId(int[] id) { this.id = id; から private int id; public int getId() { return id; } public void setId(int id) { this.id = id; に変えるとエラーは無くなりますが・・・ しかしながら配列型のBeanでは受入はできないということでしょうか。うまい方法はないでしょうか。 ご教授の程よろしくお願い申し上げます。

  • Java
  • 回答数1
  • ありがとう数0

みんなの回答

回答No.1

List<Dept> list = sqlMap.queryForList("getDept"); じゃだめ? どうしても配列で欲しかったら、 <select id="get_id_array"> select id from dept </select> List<int> list = sqlMap.queryForList("get_id_array"); int[] id = list.toArray(new int[list.size()]);

関連するQ&A

  • クラスの設計の問題

    今C++でクラスの設計をしています。 どう設計すれば、いいか分からないので、しっている方に教えていただきたいですが。 class A{ private: int id; public: int getId(); void setId(); }; class B{ private: int id; public: int getId(); void setId(); } class C{ private: int id; public: int getId(); void setId(); } この三つのクラスが、共通な機能があります。また、実装も同じで、 継承を利用して、どう設計すれば、いいですか? よろしくお願いします。

  • JavaBeansにDBの値を格納

    JavaBeansにDBの値を格納したいのですがやり方がよくわかりません。 どなたかわかる方教えていただけないでしょうか? ちなみにこんなやり方でやってみました。 DAOは int i = 0; while(rs.next()){    jb.setId(i,rs.getString("syouhinid"));    i++; } JavaBeansは private String[] id = null; public void setId(int i, String val){ this.id[i] = val; } public String getId(int i){ return id[i]; } こんな感じです。 部分的ですがこんな感じです。 ソースコードを全部乗せると長くなるので、全部乗せられませんが、 いまいちJavaBeansにDBの値を格納するやり方がわからないので 皆さん色々教えてください。宜しく御願い致します。

  • シンボルが解釈できない???

    ファイルは全て同じディレクトリ中に入っています。 ItemS.javaというファイルをコンパイルするとシンボルを解釈処理できません,というエラーが表示されます。ソース内容は以下です。 //商品ID指定による商品の検索 public Item getItem(int id) { Item item = null; for(int i = 0; i < items.size(); i++) { item = getItemByIndex(i); if(item.getId() == id) { return item; } } return null; } <エラー内容MS-DOSより> Items.java:39:シンボルを解釈処理できません。 シンポル : クラス Item 位置 :Itemのクラス public Item getItem(int id) {     ^ という内容です。 ちなみにItem.javaの一部ソース内容です。 private int id; public class Item { public Item(int id, String name, double price) { this.id = id; }  //商品IDプロパティ public void setId(int id) { this.id = id; } public int getId() { return id; }   以上です。なぜ解釈処理されないか原因が分かりません。アドバイスお願い します。

    • ベストアンサー
    • Java
  • スレッドセーフ?スレッドアンセーフ?

    Struts2にてスレッドセーフを勉強しており 以下のコードがスレッドセーフなのか、それともスレッドアンセーフなのかご意見を頂きたいと思います。 個人的な意見ですが、インスタンス変数を利用しているためスレッドアンセーフになるのではないかと思いますが間違いございませんでしょうか。 //以下 Struts2 public class InsertProgram extends ActionSupport implements ServletRequestAware{ private Test test = new Test(); private String id; private String name; public class execute(){ id     = request.getParameter("id"); name = request.getParameter("name");        //以下がご意見を頂きたい箇所です。 test.setId(id); test.setName(name); test.insert(); return SUCCESS; } } public class Test{ private String id; private String name; public String getId() { return id; } public String getName() { return name; } public void setId(String id) { this.id = id; } public void setName(String name) { this.name = name; } public class insert() { //割愛致します。 データベースにid 及び name をinsert します。 sql = "Insert into test_db(id , name) ・・・" } }

    • ベストアンサー
    • Java
  • ButteflyPersistenceの主キー

    現在O/RマッパーでButteflyPersistenceを使っているのですが、主キーがうまくマッピングできていないらしく更新・削除の処理をすると”No primary key columns for object mapping”というエラーが発生します。主キーを割り当てる方法がございましたらご教授ください。 設定したファイルの内容は以下の通りです。 DBはH2を使っています。 CREATE TABLE user ( ID Identity, NAME varchar(255) default NULL, AGE Integer (2), PRIMARY KEY (ID) ) Userクラス import com.jenkov.db.itf.mapping.AClassMapping; import com.jenkov.db.itf.mapping.AGetterMapping; import com.jenkov.db.itf.mapping.ASetterMapping; @AClassMapping(mappingMode="modify", tableName="user") public class User { @SuppressWarnings("unused") private static final long serialVersionUID = 1L; private int id; private int age; @AGetterMapping(columnName="ID",databaseGenerated=true) public int getId() { return id; } @ASetterMapping(columnName="ID") public void setId(int id) { this.id = id; } private String name; @AGetterMapping(columnName="NAME") public String getName() { return name; } @ASetterMapping(columnName="NAME") public void setName(String name) { this.name = name; } @AGetterMapping(columnName="AGE") public int getAge() { return age; } @ASetterMapping(columnName="AGE") public void setAge(int age) { this.age = age; } }

  • public class

    ★mybicycle1というオブジェクト★       ↓ public class myBicycle1{ private int cadence; private int gear; private int speed; private int id; private static int numberOfBicycles = 0; public myBicycle1(int startCadence, int startSpeed, int startGear){ gear = startGear; cadence = startCadence; speed = startSpeed; id = ++numberOfBicycles; } public int getID() { return id; } public static int getNumberOfBicycles() { return numberOfBicycles; } public int getCadence(){ return cadence; } public void setCadence(int newValue){ cadence = newValue; } public int getGear(){ return gear; } public void setGear(int newValue){ gear = newValue; } public int getspeed(){ return speed; } public void applyBrake(int decrement){ speed -= decrement; } public void speedUp(int increment){ speed += increment; } } ☆これの初期状態を ペダル回転数 60 スピード 0 ギア 1 ☆次にmybicycle2というオブジェクトで ペダル回転数 62 スピード 0 ギア 1 ☆作られた直後のmybicycle1,2に情報を出力できるようにする 自転車ナンバー(ID) 回転数 スピード ギア です。どなたか分かる方よろしくお願いします。。

  • ActionFormをjavacすると

    以下の様な警告がでました。 ActionForm.java: package struts; import org.apache.struts.action.ActionForm; public final class AuthenticationForm extends ActionForm { private String id; private String pass; public void setId(String id) {this.id = id;} public String getId() {return id;} public void setPass(String pass) {this.pass = pass;} public String getPass() {return pass;} } # javac -cp ./struts.jar:./servlet-api.jar:. AuthenticationForm.java ---------- 1. WARNING in AuthenticationForm.java (at line 4) public final class AuthenticationForm extends ActionForm ^^^^^^^^^^^^^^^^^^ The serializable class AuthenticationForm does not declare a static final serialVersionUID field of type long ---------- 1 problem (1 warning) # 警告の意味がわからないのですが この警告の意味を教えてください。 また、この警告を回避する手段がありましたら教えてください。

    • ベストアンサー
    • Java
  • 続き webアプリをつくってます。変数がなぜか渡りません。

    続き webアプリをつくってます。変数がなぜか渡りません。 見回ったのですが原因がわかりませんでした。 間違った箇所はどこですか。 package info.searchman; import java.io.*; import java.sql.*; //import java.util.*; public class ShinzinInfoTorokuBeans implements Serializable { /** * */ private static final long serialVersionUID = 1L; private String Id; private String name; private String old; private String taiju; private String shintyo; private String other; //Constructor public ShinzinInfoTorokuBeans() { System.out.println("sitb constructor"); } // Setter Methods public void setId(String Id) { this.Id = Id; } public void setName(String name) { this.name = name; } public void setOld(String old) { this.old = old; } public void setTaiju(String taiju) { this.taiju = taiju; } public void setShintyo(String shintyo) { this.shintyo = shintyo; } public void setOther(String other) { this.other = other; } // Getting Methods public String getId() { return this.Id; } public String getName() { return this.name; } public String getOld() { return this.old; } public String getTaiju() { return this.taiju; } public String getShintyo() { return this.shintyo; } public String getOther() { return this.other; } //execute insert public void insert() { try { System.out.println("++++" +Id); System.out.println("tib7 insert"); //JDBC Driver Class.forName("org.postgresql.Driver"); Connection con = DriverManager.getConnection("jdbc:postgresql:postgres","postgres","gokui"); Statement stmt = con.createStatement(); String table = "testweb"; String values = "(\'"+Id+"\', \'"+name+"\', \'" +old+"\', \'"+taiju+"\', \'"+shintyo+"\', \'"+other+"\')"; //System.out.println("Id"+"name"+"old"+"taiju"+"shintyo+other"); String insertsql = "insert into "+table+" values " + values; //sql stmt.executeUpdate(insertsql); //db close stmt.close(); con.close(); } catch (Exception ex) { System.out.println("Exception insertでエラー: " + ex.getMessage()); } } } ここまで

    • ベストアンサー
    • Java
  • オブジェクトの中のプロパティを認識できません

    javax.el.PropertyNotFoundException: Property 'id' not found on type java.lang.Stringをいうアラームが消えません。 どなたか<c:out value="${var5.id}"/>を表示する方法を教えて下さい。 「hoge.jsp」 <%@ page language="java" contentType="text/html; charset=Windows-31J" pageEncoding="Windows-31J" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <c:if test="${itemSize != 0}"> <table border="0" > <c:forEach var="var5" items="table"> <tr> <td width="30" ><c:out value="${var5.id}"/></td> <td width="210"><c:out value="${var5.name}"/></td> <td width="50" ><c:out value="${var5.price}"/></td> <td width="50" ><input type="text" name="count" value="1" size="3"/></td> </tr> </c:forEach> </table> 「hoge.java」 public class hoge extends HttpServlet{ private static final long serialVersionUID = 1L; public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("Windows-31J"); int id = 0; String name = null; int price = 0; try{ table3 = new ArrayList<Object>(); id = Integer.parseInt(request.getParameter("id")); name = request.getParameter("name"); price = Integer.parseInt(request.getParameter("price")); hogeBean hoge = new hogeBean(); hoge.setId(id); hoge.setName(name); hoge.setPrice(price); table3.add(hoge); request.getSession().setAttribute("table", table3); }catch(Exception e){ throw new ServletException(e); } getServletContext().getRequestDispatcher("/hoge.jsp").forward(request,response); } private List<Object> table3; public List<Object> getTable3() { return table3; } } 「hogeBean.java」 public class hogeBean{ private int id; public int getId(){ return id; } private String name; public String getName(){ return name; } public void setName(String name){ this.name = name; } public void setId(int id){ this.id = id; } private int price; public int getPrice(){ return price; } public void setPrice(int price){ this.price = price; } }

    • ベストアンサー
    • Java
  • 永続化前後のクラスの表現について C#

    ものすごくくだらない質問ですみません。 リレーショナルデータベースを使わざるを得なく、O/Rマッピングツールは使えない状況です。 class Employee があります。 StaffCodeがありますが、将来このコードが重複はありませんが変わる可能性があるので永続化を目的としてこれを主キーとして使えません。 そこで主キーにサロゲートキーを使おうと考えました。 アプリ側で対応するよりもデータベース側でオートナンバーを使います。 一応下記コードでこれから採番する社員と、永続化&採番したあとの社員を表現する事はできます。 しかし同じクラスを使うものなのでしょうか? クラスを分けるべきでしょうか? そもそも考え方がおかしいですか? Class Employee { Public Int Id { get; private set; } Public String Name { get; private set; } Public Int StaffCode { get; private set; } Public Employee(String name, Int staffCode) { this.Name = name; this.StaffCode = staffCode; } Public Employee(Int id, String name, Int staffCode) { this.Id = id; this.Name = name; this.StaffCode = staffCode; } Public Void SetId(Int id) { this.Id = id; } }

専門家に質問してみよう