springboot之jpa支持

转载请标明出处: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;
            }
        });
    }

浏览器访问结果
在这里插入图片描述

小结

在这里插入图片描述

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 1024 设计师:上身试试 返回首页