Spring Boot JPA 簡(jiǎn)單的CRUD

1.Demo

做了一個(gè)小demo來(lái)演示簡(jiǎn)單的crud,查找用戶(hù),更新用戶(hù)吃谣,刪除用戶(hù)乞封。

1.1生成spring boot JPA項(xiàng)目

老規(guī)矩,還是通過(guò)https://start.spring.io/這個(gè)網(wǎng)址生成需要的項(xiàng)目解壓然后用idea打開(kāi)岗憋,我選擇的組件有:h2, JPA, web, lombok.

生成項(xiàng)目

1.2 生成User實(shí)體

在實(shí)體中我們用到了Lombok肃晚,幫助我們減少了很多冗余代碼,關(guān)于Lombok的使用仔戈,可以參考我上一篇文章Lombok是什么关串。

  • @Entity 標(biāo)注該類(lèi)為實(shí)體類(lèi),屬性和數(shù)據(jù)庫(kù)fiel一一對(duì)應(yīng)
  • @Build Lombok中的注解监徘,在初始化類(lèi)的時(shí)候可以用build方法來(lái)進(jìn)行創(chuàng)建
  • @Data Lombok中的注解晋修,可以參考我的上一篇文章。
  • @Table表明了該類(lèi)在數(shù)據(jù)庫(kù)中映射了哪一張表耐量。
  • @AllArgsConstructor Lombok中的注解飞蚓,可以參考我的上一篇文章。
  • @NoArgsConstructor Lombok中的注解廊蜒,可以參考我的上一篇文章趴拧。
package com.xuzhang.springbootjpa.model;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.hibernate.annotations.CreationTimestamp;

import javax.persistence.*;
import java.util.Date;

@Entity
@Builder
@Data
@Table(name = "User")
@AllArgsConstructor
@NoArgsConstructor
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String name;
    private String pwd;
    @CreationTimestamp
    private Date createTime;
    @CreationTimestamp
    private Date updateTime;
}

1.3 創(chuàng)建Repository

Repository才是JPA的威力所在溅漾,只需要繼承一個(gè)接口,那么你將得到查詢(xún)著榴,刪除更新接口添履,真是太方便了,代碼如下:

package com.xuzhang.springbootjpa.repository;

import com.xuzhang.springbootjpa.model.User;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;

public interface UserRepository extends JpaRepository<User, Long> {
    @Query(value = "update User set name = ? where id = ? ", nativeQuery = true)
    @Modifying
    void updateUser(String name, Long id);
}

1.4 創(chuàng)建RestController進(jìn)行測(cè)試

關(guān)于controller里面的參數(shù)傳遞我會(huì)另外寫(xiě)一篇文章進(jìn)行記錄

package com.xuzhang.springbootjpa.controller;

import com.xuzhang.springbootjpa.model.User;
import com.xuzhang.springbootjpa.repository.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import javax.transaction.Transactional;
import java.util.List;

@RestController
public class UserController {
    @Autowired
    UserRepository userRepository;

    @RequestMapping("/initUser")
    public void initUser() {
        for (int i = 0; i < 10; i++) {
            userRepository.save(
                    User.builder().name("xuzhang" + i).pwd(String.valueOf(i)).build());
        }
    }

    @RequestMapping("/findAllUsers")
    public List<User> getAllUser() {
        return userRepository.findAll();
    }

    @RequestMapping(value = "/addUser", method = RequestMethod.POST)
    public User addUser(@RequestBody User user) {
        return userRepository.save(user);
    }

    @RequestMapping(value = "deleteUser/{id}")
    public void deleteUser(@PathVariable("id") Long id) {
        userRepository.deleteById(id);
    }

    @RequestMapping(value = "updateUser", method = RequestMethod.POST)
    @Transactional
    public void updateUser(@RequestBody User user) {
        userRepository.updateUser(user.getName(), user.getId());
    }

}

測(cè)試結(jié)果:

  • addUser
addUser
  • findAllUsers


    findAllUser
  • updateUser


    updateUser

    findUser to verify update
  • deleteUser


    deleteUser

    findUser to verify delete

碼云地址:

https://gitee.com/xuzhangRIchard/springbootjpa

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末脑又,一起剝皮案震驚了整個(gè)濱河市暮胧,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌问麸,老刑警劉巖往衷,帶你破解...
    沈念sama閱讀 218,122評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異严卖,居然都是意外死亡席舍,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)哮笆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)来颤,“玉大人,你說(shuō)我怎么就攤上這事稠肘「GΓ” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,491評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵项阴,是天一觀(guān)的道長(zhǎng)滑黔。 經(jīng)常有香客問(wèn)我,道長(zhǎng)鲁冯,這世上最難降的妖魔是什么拷沸? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,636評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮薯演,結(jié)果婚禮上撞芍,老公的妹妹穿的比我還像新娘。我一直安慰自己跨扮,他們只是感情好序无,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,676評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著衡创,像睡著了一般帝嗡。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上璃氢,一...
    開(kāi)封第一講書(shū)人閱讀 51,541評(píng)論 1 305
  • 那天哟玷,我揣著相機(jī)與錄音,去河邊找鬼。 笑死巢寡,一個(gè)胖子當(dāng)著我的面吹牛喉脖,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播抑月,決...
    沈念sama閱讀 40,292評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼树叽,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了谦絮?” 一聲冷哼從身側(cè)響起题诵,我...
    開(kāi)封第一講書(shū)人閱讀 39,211評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎层皱,沒(méi)想到半個(gè)月后性锭,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,655評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡叫胖,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,846評(píng)論 3 336
  • 正文 我和宋清朗相戀三年篷店,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片臭家。...
    茶點(diǎn)故事閱讀 39,965評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖方淤,靈堂內(nèi)的尸體忽然破棺而出钉赁,到底是詐尸還是另有隱情,我是刑警寧澤携茂,帶...
    沈念sama閱讀 35,684評(píng)論 5 347
  • 正文 年R本政府宣布你踩,位于F島的核電站,受9級(jí)特大地震影響讳苦,放射性物質(zhì)發(fā)生泄漏带膜。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,295評(píng)論 3 329
  • 文/蒙蒙 一鸳谜、第九天 我趴在偏房一處隱蔽的房頂上張望膝藕。 院中可真熱鬧,春花似錦咐扭、人聲如沸芭挽。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,894評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)袜爪。三九已至,卻和暖如春薛闪,著一層夾襖步出監(jiān)牢的瞬間辛馆,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,012評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工豁延, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留昙篙,地道東北人腊状。 一個(gè)月前我還...
    沈念sama閱讀 48,126評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像瓢对,于是被迫代替她去往敵國(guó)和親寿酌。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,914評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容