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

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

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

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

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

Q&A

1回答

1535閲覧

Java SpringBoot SQL文について

dyxRZKg87iYEc4p

総合スコア21

Java

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

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

0グッド

0クリップ

投稿2021/11/07 13:54

編集2021/11/08 14:08

前提・実現したいこと

java springbootでポートフォリオ作成中の初心者です。
現在、日記のようなアプリを作成しておりログイン機能・中身までほとんど
実装できているのですが、どのユーザーでも共通の日記を表示してしまいます。(掲示板のように)
実現したいことは、ユーザー毎のプライベートな日記にしたいです。(自分だけ見れるように)
どのようにSQL文を書いたらよろしいのでしょうか?
色々試しているのですが今だに実現できておらず、
わかる方にご教授お願いしたいと思っております。

ソースコード追記しております。

該当のソースコード

NoteController.java 省略 @RequiredArgsConstructor @Controller public class NoteController { private final NoteService service; @GetMapping("/list") public String getAllNotes(Model model, @PageableDefault(size = 20) Pageable pageable) { model.addAttribute("page", service.selectAll(pageable)); return "list"; } @GetMapping("/add") public String addNote(@ModelAttribute Note note) { return "form"; } @PostMapping("/process") public String process(@Validated @ModelAttribute Note note, BindingResult result, Model model, RedirectAttributes redirectAttributes) { if (result.hasErrors()) { model.addAttribute("agein", "もう一度入力してください"); return "form"; } // 現在日付をnoteに格納 note.setDate(LocalDate.now()); service.save(note); redirectAttributes.addFlashAttribute("add", "追加しました"); return "redirect:/list"; } @GetMapping("/edit/{id}") public String editNote(@PathVariable Long id, Model model) { model.addAttribute("note", service.selectByPrimaryKey(id)); return "form"; } @GetMapping("/delete/{id}") public String deleteNote(@PathVariable Long id, RedirectAttributes redirectAttributes) { service.deleteByPrimaryKey(id); redirectAttributes.addFlashAttribute("delete", "削除しました"); return "redirect:/list"; } }

該当のソースコード

Note.java package com.beit_and_pear.model; import java.time.LocalDate; import javax.validation.constraints.NotBlank; import javax.validation.constraints.Size; import org.springframework.format.annotation.DateTimeFormat; import lombok.Getter; import lombok.Setter; @Getter @Setter public class Note { private Long id; @Size(max = 20) private String name; @NotBlank @Size(max = 250) private String content; @DateTimeFormat(pattern = "yyyy-MM-dd") private LocalDate date; private String userId; }

該当のソースコード

schema.sql CREATE TABLE IF NOT EXISTS note ( id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY, date datetime, name VARCHAR(20), content VARCHAR(250) NOT NULL, user_id VARCHAR(100) ); CREATE TABLE IF NOT EXISTS m_user ( user_id VARCHAR(100) PRIMARY KEY, password VARCHAR(100), role varchar(50) );

該当のソースコード

data.sql INSERT INTO note(name, date, content, user_id) VALUES('テスト', '2021-10-28','サンプルです。削除して構いません。','tanakaken'), ('テスト', '2021-10-28','サンプルです。削除して構わない。','user'); INSERT INTO m_user (user_id, password, role) VALUES('tanakaken', '$2a$10$sASu3M4jSGuO80Q9yBKI4ugTCWCOnbvXSZets1wfqkBGnGKJgG.jy', 'ROLE_ADMIN'), ('user', '$2a$10$sASu3M4jSGuO80Q9yBKI4ugTCWCOnbvXSZets1wfqkBGnGKJgG.jy', 'ROLE_GENERAL');

該当のソースコード

UserMapper.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="com.beit_and_pear.mapper.UserMapper"> <!-- ユーザー1件登録 --> <insert id="insertOne"> insert into m_user(user_id, password, role) values(#{userId}, #{password}, #{role}) </insert> <!-- ログインユーザー取得情報 --> <select id="findLoginUser" resultType="MUser"> select * from m_user where user_id = #{userId} </select> </mapper>

該当のソースコード

NoteMapper.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="com.beit_and_pear.mapper.NoteMapper"> <select id="count" resultType="Long"> SELECT COUNT(*) FROM note where user_id = #{userId} </select> <select id="selectAll" resultType="Note"> SELECT * FROM note where user_id = #{userId} ORDER BY id DESC </select> <select id="selectByPrimaryKey" resultType="Note"> SELECT * FROM note WHERE id = #{id}, user_id = #{userId} </select> <insert id="insert"> INSERT INTO note(name, date, content) VALUES(#{name}, #{date}, #{content}) </insert> <update id="updateByPrimaryKey"> UPDATE note SET name = #{name}, content = #{content} WHERE id = #{id}, user_id = #{userId} </update> <delete id="deleteByPrimaryKey"> DELETE FROM note WHERE id = #{id}, user_id = #{userId} </delete> </mapper>

イメージ説明
イメージ説明

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

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

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

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

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

guest

回答1

0

ユーザー毎のプライベートな日記にしたいです。(自分だけ見れるように)

どのようにSQL文を書いたらよろしいのでしょうか?

  1. noteテーブルに、user_idを追加定義する
  2. selectAllほかすべての検索条件に、必ずuser_idを指定する SELECT * FROM note whewe user_id = ? ORDER BY id DESC

投稿2021/11/07 23:43

shiketa

総合スコア4061

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

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

dyxRZKg87iYEc4p

2021/11/08 14:12

ご回答ありがとうございます。 user_idを追加定義、検索条件にwhere user_idを指定してみましたところ2枚目の画像のように表示されなくなってしまいました。どこが間違っているのでしょうか? ソースコードを追記しております。 よろしければ再度ご指摘をお願いいたします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問