前提・実現したいこと
Eclipse SpringBootにて現在ポートフォリオ作成をしております。
日記のようなアプリを作成しており、ログイン機能・日記画面の中身まで作成できており、
ほとんど完成に近い状態なのですが、それぞれ違うユーザーでログインしても日記の
内容が同じものが表示されてしまいます。(掲示板のようにみんなが見れてしまう)
ログインユーザー毎に別セッションにしてprivateな日記にしたいと思っています。
スコープがsingletonだからだと思うのですが、sessionもしくはapplication
に変更すれば良いのでしょうか?
該当のソースコード
CREATE TABLE note ( id int(5) NOT NULL AUTO_INCREMENT, dateTime datetime, name varchar(20), title varchar(30), contents varchar(500) NOT NULL, PRIMARY KEY (id) ); CREATE TABLE IF NOT EXISTS user ( user_id VARCHAR(50) PRIMARY KEY, password VARCHAR(100), role VARCHAR(50) ); ```### 該当のソースコード ```ここに言語名を入力 package com.example.demo.Dao; import java.sql.Timestamp; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Optional; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Repository; import com.example.demo.entity.Note; @Repository public class NoteDaoImpl implements NoteDao { // データベース操作用のクラス private final JdbcTemplate jdbcTemplate; @Autowired public NoteDaoImpl(JdbcTemplate jdbcTemplate) { this.jdbcTemplate = jdbcTemplate; } @Override public void create(Note note) { jdbcTemplate.update("INSERT INTO note(dateTime, title, name, contents) values(?,?,?,?)", note.getDateTime(), note.getTitle(), note.getName(), note.getContents()); } @Override public int update(Note note) { return jdbcTemplate.update("UPDATE note SET dateTime = ?, name = ?, title = ?, contents = ? WHERE id = ?", note.getDateTime(), note.getName(), note.getTitle(), note.getContents(), note.getId()); } @Override public int deleteById(int id) { return jdbcTemplate.update("DELETE FROM note WHERE id = ?", id); } @Override public List<Note> getAll() { String sql = "SELECT id, dateTime, name, title, contents FROM note ORDER BY id DESC"; List<Map<String, Object>> resultList = jdbcTemplate.queryForList(sql); List<Note> list = new ArrayList<Note>(); for (Map<String, Object> result : resultList) { Note note = new Note(); note.setId((int) result.get("id")); note.setDateTime(((Timestamp) result.get("dateTime")).toLocalDateTime()); note.setName((String) result.get("name")); note.setTitle((String) result.get("title")); note.setContents((String) result.get("contents")); list.add(note); } return list; } @Override public Optional<Note> findById(int id) { String sql = "SELECT id, dateTime, name, title, contents FROM note WHERE id = ?"; Map<String, Object> result = jdbcTemplate.queryForMap(sql, id); Note note = new Note(); note.setId((int) result.get("id")); note.setDateTime(((Timestamp) result.get("dateTime")).toLocalDateTime()); note.setName((String) result.get("name")); note.setTitle((String) result.get("title")); note.setContents((String) result.get("contents")); // NoteをOptionalでラップする Optional<Note> noteOpt = Optional.ofNullable(note); return noteOpt; } }
該当のソースコード
package com.example.demo.entity; import lombok.Data; @Data public class MUser { private String userId; private String password; private String role; }
該当のソースコード
package com.example.demo.entity; import java.time.LocalDateTime; import lombok.Getter; import lombok.Setter; @Getter @Setter public class Note { private int id; private LocalDateTime dateTime; private String title; private String name; private String contents; }