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

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

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

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Java

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

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Q&A

解決済

2回答

2752閲覧

PostgreSQLから値を取得できない

Rivermouth

総合スコア18

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Java

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

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

0グッド

0クリップ

投稿2020/08/27 08:17

編集2020/08/28 04:52

PostgreSQLから取得したデータをコンソールに出力させたいのですが、コンソール上では

17:09:18.978 [http-nio-8080-exec-3] DEBUG org.springframework.web.servlet.DispatcherServlet - GET "/web_sample/search", parameters={}

17:09:19.006 [http-nio-8080-exec-3] DEBUG org.springframework.web.servlet.handler.SimpleUrlHandlerMapping - Mapped to ResourceHttpRequestHandler ["/WEB-INF/public/"]
17:09:19.011 [http-nio-8080-exec-3] DEBUG org.springframework.web.servlet.resource.ResourceHttpRequestHandler - Resource not found
17:09:19.011 [http-nio-8080-exec-3] DEBUG org.springframework.web.servlet.DispatcherServlet - Completed 404 NOT_FOUND>

と表示されてしまいます。
DBからのデータが上手く取得できていないと思うのですが、どこをどのように直せばいいのか分かりません。
どなたかアドバイスをお願いいたします。

UserController

package group.study.dev.sample.sample001.controller; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import group.study.dev.dto.sample.SampleDto; import group.study.dev.sample.search.model.UserModel; import group.study.dev.sample.search.service.UserService; import group.study.dev.web.common.controller.AbstractController; @Controller public class UserController extends AbstractController { @Autowired private UserService userService; @RequestMapping("/search") public void init(UserModel userModel, Model model) { List<SampleDto> listAll = userService.selectAll(); model.addAttribute("listAll", listAll); System.out.println("listAll=" + listAll); } }

UserService

package group.study.dev.sample.sample001.service; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import group.study.dev.dao.sample.SampleDao; import group.study.dev.dto.sample.SampleDto; import group.study.dev.sample.sample001.model.UserModel; @Service public class UserService { @Autowired private SampleDao sampleMapper; public List<SampleDto> selectAll(){ UserModel userModel = new UserModel(); userModel.setSampleList(sampleMapper.selectAll()); return userModel.getSampleList(); } }

UserModel

package group.study.dev.sample.sample001.model; import java.util.List; import group.study.dev.dto.sample.SampleDto; import lombok.Data; @Data public class UserModel { private List<SampleDto> sampleList; }

SampleDao

package group.study.dev.dao.sample; import group.study.dev.dto.sample.SampleDto; import java.util.List; import org.apache.ibatis.annotations.Mapper; @Mapper public interface SampleDao { public List<SampleDto> selectAll(); }

SampleMapper.xml

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="group.study.dev.dao.sample.SampleDao"> <select id="selectAll" resultType="group.study.dev.dto.sample.SampleDto"> select * from sample_table </select> </mapper>

SampleDto

package group.study.dev.dto.sample; import lombok.Data; @Data public class SampleDto { private String sampleId; private String sampleName; }

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

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

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

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

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

guest

回答2

0

データベースから値を取得する前の段階で、Controllerの不備です。

Controllerクラスに @RequestMapping("/search") を付けただけでは動作しません。HTTPメソッドに対応する設定も必要です。

java

1import org.springframework.web.bind.annotation.GetMapping; 2 3... 4 5 @GetMapping 6 public void init(UserModel userModel, Model model) { 7 8 }

取り急ぎ、この設定でControllerが http://localhost:8080/search で動作します。
※Springの設定(application.ymlなど)で、コンテキストパスを設定している場合は、コンテキストパスが含まれます。

yml

1server: 2 servlet: 3 context-path: /sampleapp

とした場合は、http://localhost:8080/sampleapp/search です。

なお、Controllerのメソッドの戻り値が void ですが、この場合、/search に対応するJSPないしはThymeleafテンプレート(HTMLファイル)へフォワードしますが、ファイルがない場合は同じくSpringのエラー画面となります。

投稿2020/08/27 15:31

A-pZ

総合スコア12011

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

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

Rivermouth

2020/08/28 04:49

ご回答ありがとうございます。 YakumoSakiさんのアドバイスに従い、コントローラーのメソッドに@RequestMappingをつけました。 加えて、A-pZさんのいう通り、public void init(UserModel userModel, Model model) {} と変更しました。 ただ、DBから値を取ってくるとnullとなってしまいます。 どこかが間違えていると思うのですが、見当もつきません。 再度、アドバイスを頂けますか?
A-pZ

2020/08/28 05:07

select * from sample_table と SampleDto のフィールド名が一致していないからではないでしょうか。 select * は取得する項目名がわからなくなるので、できれば避けるべきです。
Rivermouth

2020/08/28 07:22

ご回答ありがとうございます。 SQL文を以下のように変更しました。 select sample_id, sample_name from sample_table SampleDtoクラスを以下のように変更しました。 import lombok.Data; @Data public class SampleDto { private String sample_id; private String sample_name; } しかし、以下のように表示されてしまいます。 listAll=[null, null, null, null]
A-pZ

2020/08/28 10:45

同じ結果になるかもしれませんが、Serviceクラスで、 sampleMapper.selectAll(); した結果のListもすべてnullになっている状態でしょうか。 レコードは4件取れているようですので、SQLの発行からレコードの取得は失敗していないようですが、MapperからDTOへの変換がうまくいっていないか、ServiceクラスでModelに格納している段階でうまくいっていないように思います。 なお、MyBatisのSQL定義ファイルがうまくリロードできていない場合なども考えられますので(これは環境に依ります)、一度Webアプリケーションの停止→再ビルドして実行してみてください。
guest

0

ベストアンサー

とりあえず回答なので外している可能性がありますが、@RequestMapping をControllerのメソッドにつけていただくと、NOT FOUNDは回避できると思います。

もしSpringBootをお使いでしたら、タグをSpringbootにしていただけると回答がつきやすいかと思います。

java

1package group.study.dev.sample.sample001.controller; 2 3import java.util.List; 4 5import org.springframework.beans.factory.annotation.Autowired; 6import org.springframework.stereotype.Controller; 7import org.springframework.ui.Model; 8import org.springframework.web.bind.annotation.RequestMapping; 9 10import group.study.dev.dto.sample.SampleDto; 11import group.study.dev.sample.sample001.model.UserModel; 12import group.study.dev.sample.sample001.service.UserService; 13 14@Controller 15public class UserController { 16 17 @Autowired 18 private UserService userService; 19 20 @RequestMapping("/search") 21 public void init(UserModel userModel, Model model) { 22 23 List<SampleDto> listAll = userService.init(userModel); 24 25 model.addAttribute("listAll", listAll); 26 27 System.out.println(listAll); 28 } 29 30}

投稿2020/08/27 15:47

YakumoSaki

総合スコア2027

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

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

Rivermouth

2020/08/28 04:37

ご回答ありがとうございます。 アドバイス通りにしましたら、NOT_FOUNDは回避することができました。 しかし、listAllの中身をみるとnullとなってしまいます。 DBには既に値が入っておりますので、nullが帰ってくるのはおかしいのですが、どこが間違っているのかアドバイスいただけますでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問