前提・実現したいこと
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>
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/11/08 14:12