前提・実現したいこと
springbootを使ってWEBサイト(とりあえず自分のPCだけのローカル環境)を作ってみる過程でデータベースに触れてみようと思ったのですが、
うまく動きません。
具体的には、
HTMLのformで入力した内容をDB上に保存する
ということをやりたいと思っています。
DBに情報を書き込めるようにするにはどのようにすればいいかを教えていただきたいです。
springboot自体、先日初めて触ったので本来ならありえないようなミスや勘違いをしているかもしれません...よろしくお願いします
###できたこと
HTMLから入力した内容を受け取ってString型の変数に格納するまではできています。
発生している問題
DBに情報を書き込むこと(接続の段階から失敗しているかもしれません)
また、下記の画像の一番下のschema.sqlで書き込むテーブル(USERDATA)がなかったら作成してくれると思っているのですが、
作成されません
###DBとの接続部分
application.yml
spring: datasource: driver-class-name: org.h2.Driver url: jdbc:h2:mem:memo username: memo password: pass initialization-mode: never
schema.sql
create table if not exists USERDATA( USERId integer not null primary key , USERNAME varchar(10) not null, PASSWORD varchar(20) not null );
USERDATA.java
package DB.Domain; import lombok.Data; import javax.persistence.Id; @Data public class USERDATA { @Id private Integer USERId; private String USERNAME; private String PASSWORD; public USERDATA(Integer id, String username, String password) { } }
RegisterR.java
package DB; import DB.Domain.USERDATA; import DB.Repository.USERDATARepository; import com.web.memo.register.Register; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.data.jdbc.DataJdbcTest; @DataJdbcTest public class RegisterR { @Autowired USERDATARepository userdataRepository; public void add(Integer Id, String username, String password){ USERDATA userdata = new USERDATA(Id, username, password); USERDATA inserted = userdataRepository.save(userdata); } }
###RegisterR.javaを使って処理をする部分
import DB.RegisterR; public class Register { private String username; private String password; Register(String username, String password){ this.username = username; this.password = password; } public void insert(){ //ここは入力したものが表示されることからここまではうまくいっているはずです System.out.println("受け取ったよ" + username + password); RegisterR registerR = new RegisterR(); registerR.add(null, username , password); } public String getUsername() { return username; } public String getPassword() { return password; } }
###HTMLからの受取部分
受け取ったusernameとpasswordをregister.insert()でDBに書き込みたいと思っています。
import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; @Controller public class registerController { @GetMapping("/register") public String register(Model model){ return "register"; } @PostMapping("register") public String reg(String username, String password, Model model){ Register register = new Register(username, password); register.insert(); return null; } }
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/31 13:12