springboot之jpa支援

不怕報錯 就怕不報錯的小猿猿發表於2020-12-02

轉載請標明出處:https://blog.csdn.net/men_ma/article/details/106847165.
本文出自 不怕報錯 就怕不報錯的小猿猿 的部落格

springboot之jpa支援

在這裡插入圖片描述

匯入相關pom依賴

		<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>

application.yml檔案配置

spring:
  jpa:
    hibernate:
      ddl-auto: update
    show-sql: true

自動建表相關程式碼

package com.xiaoqing.springboot03.entity;

import lombok.Data;

import javax.persistence.*;

/**
 * @author晴sister
 * @site https://blog.csdn.net/men_ma
 * @company xxx公司
 * @create  2020-12-01 19:03
 */
@Data
@Entity
@Table(name = "t_springboot_student_2020")
public class Student {
    @Id
    @GeneratedValue
    private Integer sid;
    @Column
    private String sname;
    @Column
    private String sex;


}

資料庫自動建表截圖
會建立一個序列以及t_springboot_student_2020表
在這裡插入圖片描述
jpa值增刪改查

 * 只要繼承JpaRepository,通常所用的增刪查改方法都有
 *  第一個引數:操作的實體類
 *  第二個引數:實體類對應資料表的主鍵
 */
public interface StudentDao extends JpaRepository<Student,Integer> {

}

controller層

package com.xiaoqing.springboot03.controller;

import com.xiaoqing.springboot03.dao.StudentDao;
import com.xiaoqing.springboot03.entity.Student;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

/**
 * @author晴sister
 * @site https://blog.csdn.net/men_ma
 * @company xxx公司
 * @create  2020-12-01 19:36
 */
@RestController
public class StudentController {

    @Autowired
    private StudentDao jpaDao;

    @RequestMapping("/add")
    public String add(Student book){
        jpaDao.save(book);
        return "success";
    }

    @RequestMapping("/edit")
    public String edit(Student book){
        jpaDao.save(book);
        return "success";
    }

    @RequestMapping("/del")
    public String del(Student book){
        jpaDao.delete(book);
        return "success";
    }

    @RequestMapping("/getOne")
    public Student getOne(Integer sid){
//        會出現懶載入問題:org.hibernate.LazyInitializationException: could not initialize proxy - no Session
//        return jpaDao.getOne(bid);
        return jpaDao.findById(sid).get();
    }

    @RequestMapping("/getAll")
    public List<Student> getAll(){
        return jpaDao.findAll();
    }
}

瀏覽器輸入請求進行測試:

http://localhost:8080/getOne?sid=11
http://localhost:8080/getAll
http://localhost:8080/add?sid=5&sname=tft&sex=uh
http://localhost:8080/del?sid=3

jpa值複雜查詢
dao層

 *  要使用高階查詢必須繼承
 * org.springframework.data.jpa.repository.JpaSpecificationExecutor<T>介面
 */
public interface StudentDao extends JpaRepository<Student, Integer>, JpaSpecificationExecutor<Student> {
}

controller層

@RequestMapping("/getCondition")
    public  List<Student> getCondition(Student book){
        return jpaDao.findAll(new Specification<Student>() {
            @Override
            public Predicate toPredicate(Root<Student> root, CriteriaQuery<?> criteriaQuery, CriteriaBuilder criteriaBuilder) {
                Predicate predicate = criteriaBuilder.conjunction();
                if(book != null){
                    if(null != book.getBname() && !"".equals(book.getBname())){
                        predicate.getExpressions().add(criteriaBuilder.like(root.get("bname"),"%"+book.getBname()+"%"));
                    }
                }
                return predicate;
            }
        });
    }

瀏覽器訪問結果
在這裡插入圖片描述

小結

在這裡插入圖片描述

相關文章