转载请标明出处: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;
}
});
}
浏览器访问结果