質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Seasar2

Seasar2はJ2EE/Java EEでの大規模な開発を効率良く行なうためのフレームワークです。 必要な設定ファイルを従来のものと比べて少なくし、依存性を分離して記述しています。 そのため、生産性の高いプログラム開発が可能です。

Q&A

解決済

1回答

9359閲覧

S2Daoを使ってDBから取得するのに詰っています

exten

総合スコア15

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Seasar2

Seasar2はJ2EE/Java EEでの大規模な開発を効率良く行なうためのフレームワークです。 必要な設定ファイルを従来のものと比べて少なくし、依存性を分離して記述しています。 そのため、生産性の高いプログラム開発が可能です。

0グッド

1クリップ

投稿2017/04/12 08:33

編集2017/04/25 05:13

いつもお世話になっております。フレームワークについて調べておりまして、Seasar2徹底入門を見つつ
画面間の値の受け渡しはできました。
その後DBから、top.jspで入力された国名を条件にして
取得したい処で手詰まりを起こしています。
S2Daoが正しく入ってないのか、diconの設定ができてないのか
赤線がでており、ネットで情報を見つけれていません。
Eclipse
Java1.7
XAMPP
TOMCAT
を使っており、Eclipseのヘルプから新規ソフトウェアからS2Daoは入れました。
ネット上のサンプルを元に進めています。

DAO package product.dao; import product.entity.Product; /*3行共にインポートされた org.seasar.dao は見つかりません、と出る*/ import org.seasar.dao.annotation.tiger.Arguments; import org.seasar.dao.annotation.tiger.Query; import org.seasar.dao.annotation.tiger.S2Dao; public class ProductDao { @S2Dao(bean=Product.class) /*ネストされた型 ProductDao はエンクロージング型を隠せません、と出る*/ public interface ProductDao { /* 国名を条件にする */ @Query("country = ? ") public Product[] selectWhere(String country); @Arguments("country") public Product selectById(String country); public int insert(Product product); public int update(Product product); public int delete(Product product); } }

追記1
s2Dao.diconが自動生成されてなかった(自作しないといけない?)
のが原因のようです。
jdbc.dicon dao.dicon s2jdbc.dicon 生成されており、修正しております。

参考URL:http://snowhiro.web.fc2.com/seasar2/Seasar2_04_S2Dao_02.html

s2Dao.diconを作成について調査中です。

追記2
途中ですが、一回追記します。
S2DaoでSQLをどう生成したらよいのかもわからないままです
actionのmainの処理もできていません。
このサイトわかりやすいよ。とかそういうのありましたら
教えて頂けないでしょうか。。。
以下は今書いてる途中のものです。

DAO package product.dao; import java.util.List; import org.seasar.dao.annotation.tiger.S2Dao; import product.entity.Product; @S2Dao(bean=Tea.class) public interface ProductDao{ public List<Product> selectAll(); }
entity(bean?) package product.entity; import org.seasar.dao.annotation.tiger.Bean; //MySQLで作ったテーブル名を書く? @Bean(table="PRODUCT_TABLE") public class Product { public Integer id; public String country; public String productName; public String description; }
action package product.action; import java.util.List; import javax.annotation.Resource; import org.seasar.framework.container.S2Container; import org.seasar.framework.container.SingletonS2Container; import org.seasar.framework.container.factory.SingletonS2ContainerFactory; import org.seasar.struts.annotation.ActionForm; import product.dao.ProductDao; import product.entity.Product; import product.form.EchoForm; public class EchoAction { // 設定ファイルのPath private static final String PATH = "test/src/main/resources/s2Dao.dicon"; //アクションフォーム @Resource @ActionForm protected EchoForm echoForm; /** 入力画面の実行メソッド */ @Execute(validator=false) public String index(){ return "top.jsp"; } // DBから値を受け取るメソッド public String main(){ // 設定ファイルを読み込む. SingletonS2ContainerFactory.setConfigPath(PATH); // 初期化する. SingletonS2ContainerFactory.init(); // コンテナを取得する. S2Container container = SingletonS2ContainerFactory.getContainer(); ProductDao proDao = (ProductDao)SingletonS2Container.getComponent(ProductDao.class); List<Product> list = proDao.selectAll(); //確認 for (Product pro : list) { System.out.print(" pro.id : " + pro.id); System.out.println(" pro.productName : " + pro.productName); System.out.println(" pro.country : " + pro.country); System.out.println(" pro.description : " + pro.description); } return "echo.jsp"; } }

追記3
教えて頂いたサンプルを作ってみたりしているのですが、Diconのパスを指定するところで、リソースが見つかりません【ESSR0055】エラーコード
が出てきている状況で処理がサンプルも、本題も同じエラーで進めれず止まってしまいます。
ディレクトリはあってるはず。。
質問するには、理解が浅くご迷惑おかけしました。

dao // 設定ファイルのPath private static final String PATH = "test/src/main/resources/s2Dao.dicon"; // 設定ファイルを読み込む Eclipseのデバッグでここでエラーを吐く S2Container container = S2ContainerFactory.create(PATH);

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

A-pZ

2017/04/17 05:02

参考にされたサイトのURL、DAO以外に実装しているソースコードや設定ファイルがあると、回答がつきやすいかと存じます。
guest

回答1

0

ベストアンサー

seasar2を離れて久しく、中途半端な回答になってしまいますが・・・

3行共にインポートされた org.seasar.dao は見つかりません、と出る

クラスパスが通っていないのではないでしょうか。

ネストされた型 ProductDao はエンクロージング型を隠せません、と出る

これは ProductDaoクラスの中にProductDaoインターフェイスを定義しているためです。
単純にエラーを消すだけなら、どちらかの定義名を変えればOKですが
そもそも参考URLでは、質問内のコードのように class の中に interface を作成していません。


4/21 追記
ひとまず別プロジェクトを作って S2Dao-tigarのExample をそのまま作ってみてはいかがでしょうか。
用意するべきテーブルの構造や、作るべきクラスのソースコードが記載されています。

投稿2017/04/18 17:00

編集2017/04/21 10:19
fcrow

総合スコア96

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

exten

2017/04/20 06:46

ご指摘ありがとうございます。 クラスパスの設定ができてなかったようです。 あとは、DBの値を一旦条件等いれずに取得できるように調査 しております。
fcrow

2017/04/21 10:26

追記内容に関して補足: リンク先は公式ドキュメントでもあります。完成したExampleを見ながら読み進めれば、より理解が深まるのではないかと思います。
fcrow

2017/04/21 10:34 編集

大事なことを忘れていました。 今回利用されている S2Dao は EOL(公式サポートの終了)を迎えていますので 学習目的などであれば問題ありませんが、公開予定のシステムには使用すべきではありません。 ご注意ください。
exten

2017/04/25 04:46

補足ありがとうございます。学習目的でフレームワークとはどういったものがあるのかなって 感じでやってるところです。(本当はもっと別のフレームワークを覚えないといけないのですが)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問