springdata jpa单表操作crud
生活随笔
收集整理的這篇文章主要介紹了
springdata jpa单表操作crud
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
spring data jpa
- 1. 項目搭建
- 1.1 配置
- 1.2 實體類
- 1.3 繼承JpaRepository接口
- 2. 批量新增
- 3. 查詢
- 4. 修改 by hql
- 5. 刪除 by hql
1. 項目搭建
使用boot整合,導入springdata jap, mysql 驅動,lombok,web。
1.1 配置
# boot add jpa, oh~ crud in single tableserver:port: 8888 spring:# datasourcedatasource:username: rootpassword: 123456driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/mydatabase?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai# jpa configjpa:hibernate:#配置創建表的相關操作ddl-auto: update#顯示sqlshow-sql: true1.2 實體類
package top.bitqian.springdatajpa.entity;import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor;import javax.persistence.*; import java.math.BigDecimal; import java.util.Date;/*** @author echo lovely* @date 2021/1/10 16:06*/@Data @NoArgsConstructor @AllArgsConstructor @Table(name = "programmer_info") @Entity public class ProgrammerInfo {@Id@GeneratedValue(strategy = GenerationType.IDENTITY)private Integer programmerId;@Column(name = "name", unique = true, nullable = false, length = 50)private String name;/*** 0 male* 1 female*/private Integer gender;private Date personBirth;@Transient // 生成表的時候忽略money字段private BigDecimal money; }1.3 繼承JpaRepository接口
package top.bitqian.springdatajpa.repository;import org.springframework.data.jpa.repository.JpaRepository; import top.bitqian.springdatajpa.entity.ProgrammerInfo;/*** @author echo lovely* @date 2021/1/10 16:13*/public interface ProgrammerRepository extends JpaRepository<ProgrammerInfo, Integer> {// TODO: todo sth...}2. 批量新增
業務類
package top.bitqian.springdatajpa.service.impl;import org.springframework.stereotype.Service; import top.bitqian.springdatajpa.entity.ProgrammerInfo; import top.bitqian.springdatajpa.repository.ProgrammerRepository; import top.bitqian.springdatajpa.service.ProgrammerInfoService;import javax.annotation.Resource; import java.util.List;/*** @author echo lovely* @date 2021/1/10 16:15*/@Service public class ProgrammerInfoServiceImpl implements ProgrammerInfoService {@Resourceprivate ProgrammerRepository programmerRepository;@Overridepublic void saveBatch(List<ProgrammerInfo> programmerInfos) {programmerRepository.saveAll(programmerInfos).forEach(r -> System.out.println("批量新增完成 =>" + r));} }測試
package top.bitqian.springdatajpa;import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; import top.bitqian.springdatajpa.entity.ProgrammerInfo; import top.bitqian.springdatajpa.service.ProgrammerInfoService;import javax.annotation.Resource; import java.util.ArrayList; import java.util.Date; import java.util.List;@SpringBootTest class SpringdataJpaApplicationTests {@Resourceprivate ProgrammerInfoService programmerInfoService;@Testvoid contextLoads() {List<ProgrammerInfo> list = new ArrayList<>();Date date = new Date();list.add(new ProgrammerInfo(null, "小千", 0, date, null));list.add(new ProgrammerInfo(null, "小小", 1, date, null));list.add(new ProgrammerInfo(null, "二哈", 0, date, null));programmerInfoService.saveBatch(list);}}3. 查詢
根據條件精確查詢, Example作為參數。
@Overridepublic List<ProgrammerInfo> getProgrammerByInfo(ProgrammerInfo programmerInfo) {// 根據條件查詢集合Example<ProgrammerInfo> example = Example.of(programmerInfo);return programmerRepository.findAll(example);} @Testvoid testGetProgrammerByInfo() {// 根據姓名查詢。ProgrammerInfo info = new ProgrammerInfo(null, "小小", null, null, null);programmerInfoService.getProgrammerByInfo(info).forEach(System.out::println);}自定義hql語句查詢
4. 修改 by hql
sql也行,hql優先。
// upd@Transactional@Modifying@Query(value = "update ProgrammerInfo p set p.name = :#{#pi.name}, p.personBirth = :#{#pi.personBirth} where p.programmerId = :#{#pi.programmerId}")void updPrById(@Param("pi") ProgrammerInfo programmerInfo); @Testvoid testPrUpd() {ProgrammerInfo info = new ProgrammerInfo(1, "小小可愛", 0, new Date(), null);pr.updPrById(info);}5. 刪除 by hql
// del@Transactional@Modifying@Query(value = "delete from ProgrammerInfo where programmerId = :#{#pi.programmerId}")void delPrById(@Param("pi") ProgrammerInfo programmerInfo); @Testvoid testPrDel() {ProgrammerInfo info = new ProgrammerInfo(1, null, 0, null, null);pr.delPrById(info);}坑:
1. 修改操作得加上事務控制。
2. @Query 進行操作時,占位符使用注意套娃。不要套錯。
單表操作可以的,但是mybatisPlus 更easy.jpg.
總結
以上是生活随笔為你收集整理的springdata jpa单表操作crud的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 手机组态软件 APP监控台达PLC C#
- 下一篇: 装 linux后 win7消失了,win