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

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

ただいまの
回答率

88.10%

springboot no.を自動で割り当てたい

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 306

score 6

no.を自動で割り当てたい。ここに言語を入力java コード package com.example.demo.controller;

@Controller
@RequestMapping("/")

public class dateController {
@Autowired
dateMapper mapper;
@Autowired
private dateRepository repository;
@GetMapping
public String top(Model model) {
model.addAttribute("dates", mapper.findAll());
return "new";
}
@PostMapping("/new")
public String create(@ModelAttribute Date date,Model model) {
mapper.save(date);
return   "redirect:/";
}
@GetMapping("/edit/{word}")
public ModelAndView edit(@PathVariable String word, @ModelAttribute Date date ,ModelAndView mav) {
mav.addObject("date",mapper.findOne(word) );
mav.setViewName("edit");
return mav;
}
@PostMapping("/edit") 
@Transactional
public String update( @ModelAttribute("date")Date date,  Model model) {
mapper.update(date);
return "redirect:/";
}
@PostMapping("/calculate")
public String cal( @RequestParam("d")LocalDate d ,Model model) {  
List<Date> D=repository.findAll();
for(int i=0;D.size()>i;i++) {
D.get(i).calculate(d);
}
model.addAttribute("R",repository.findAll());
return  "new";
}
@PostMapping("/delete/{word}")
public String delete(@PathVariable String word ,Model model) {
mapper.delete(word);
return "redirect:/";
}
}
package com.example.demo.domain;

@Entity
@Table(name="date")
public class Date {
private LocalDate d1;
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long no.;
@Id
private String word;
private String name;
private int year;
private int month;
private int day;

public void setNo.(Long no.) {
this.no.=no.;
}
public  Long getNo() {
return no;
}
public void setWord(String word) {
this.word=word;
}
public String getWord() {
return word;
}
public void setName(String name) {
this.name=name;
}
public String getName() {
return name;
}

public  void setYear(int year) {
this.year=year;  
}
public int getYear() {
return year;
}
public void setMonth(int month) {
this.month=month;
}
public int getMonth() {
return month;

public void setDay(int day) {
this.day=day;
}
public int getDay() {
return day;
}
public void setD1(LocalDate d1) {
this.d1=d1;
}
public LocalDate getD1() {
return d1;
}
public void  calculate(LocalDate X) {
LocalDate R=   X.plusYears(getYear());
LocalDate R1=   R.plusMonths(getMonth());
LocalDate d1=   R1.plusDays(getDay());
setD1(d1);
}
}

<?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.example.demo.mapper.dateMapper">
<select id="findAll" resultType="com.example.demo.domain.Date">
select * from date
</select>

<select id="findOne" resultType="com.example.demo.domain.Date">
select * from  date where word= #{word}
</select>
<insert id="save"  useGeneratedKeys="true"  keyProperty="word">
insert into date (no.,word, name , year,month,day) values(#{no.},#{word}, #{name}, #{year},#{month},#{day})

</insert>
<update id="update">
update date set name=#{name}, year=#{year},month=#{month},day=#{day} where word= #{word}
</update>
<delete id="delete">
delete from date where word = #{word}
</delete>
</mapper>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">

</head>
<body>
計算式
<th:text="${msg}">
<form th:objext="${form}" th:method="post" th:action="@{/new}">
日付ID <input  type="text"  name="word"  th:value="${word}" ><br>

名前<input type="text"  name="name" th:value="${name}"><br>
加減(Y)<input type="text"  name="year" th:value="${year}"><br>
加減(M)<input type="text"  name="month" th:value="${month}"><br>
加減(D)<input type="text"  name="day" th:value="${day}"><br>
<button type="submit">登録</button>
</form>
日付
<form method="post" th:action="@{/calculate}" th:object="${date}"
><input type="datetime"  placeholder="yyyy/MM/dd" name="d" th:value="${d}">

<button value="submit">実行</button>
</form>
<td th:text="${result}"></td>
<table>
<tr >
<td>no</td>
<td>日付ID</td>
<td>名前</td>
<td >結果</td>
<td >加減(Y/M/D)</td>
</tr>
<tr  th:each="obj:${R}" th:object="${obj}">
<td th:text="*{no.}"></td>
<td th:text="*{word}" ></td>
<td th:text="*{name}"></td>
<td th:text="*{d1}" ></td>
<td  th:text="|*{year}/*{month}/*{day}|">
<td><form method="get"  th:action="@{/edit/{word}(word=*{word})}">
<button value="submit">更新</button></form></td>
<td><form method="post" th:action="@{/delete/{word}(word=*{word})}">
<button value="submit">削除</button>
</form></td>
</table>
</body>
</html>

data.sql

CREATE TABLE IF NOT EXISTS  date(
no. int(20) NOT NULL AUTO_INCREMENT,
word varchar ,
name varchar(255) ,
year INT ,
month INT ,
day INT ,
PRIMARY KEY (word)
);

プライマリキーをword(日付ID)にしています。noを自動的に1,2,3と割り当てたいのですがどうすればいいか困っています。

イメージ説明

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • m.ts10806

    2020/05/06 17:50

    質問は編集できます。「次から」だと必ず抜けますので、今対応しておいてください。

    キャンセル

  • m.ts10806

    2020/05/06 17:51

    >DBはresources下のSQLファイルです。 

    いや、SQLはそういうコードそのものであってDBの種類関係ないです。
    https://engineer-club.jp/type-of-database#i

    キャンセル

  • m.ts10806

    2020/05/07 10:24

    解決されたようですがコードがそのままですし「どのように解決としたのか」というコメントもないまま無言解決になっています。
    ただ、おそらくこの理解度ではフレームワークは厳しいのではないかと思います。きちんとJavaサーブレットで基礎を叩き込んでからのほうが良いです。このまま進めたほうが遠回りになります。

    キャンセル

回答 1

checkベストアンサー

0

{利用しているDB} オートインクリメント
で調べてみてください。

それで難しそうなら、とりあえずで「今のIDのMAX+1」で良いと思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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

  • ただいまの回答率 88.10%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る