JpaRepository 简单条件查询

时间:2020-04-06 16:34:05 类型:JAVA
字号:    

  JpaRepository继承自PagingAndSortingRepository接口,JpaRepository基于JPA的Repository接口,极大减少了JPA作为数据访问的代码,JpaRepository是实现Spring Data JPA技术访问数据库的关键接口。

  示例:简单条件查询(通过eclipse软件实现)

选择基本依赖

    1.jpg

配置数据库

#spring配置 
spring :
    #配置数据
    datasource :
        url      : jdbc:mysql://127.0.0.1:3306/zhuangzi?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai
        username : root
        password : root
        driver-class-name : com.mysql.cj.jdbc.Driver
     #配置视图
    mvc :
        view : 
             prefix : /WEB-INF/views/
             suffix : .jsp
    resources :
              static-locations :  classpath:/static/, file:F:/java/
    #JPA控制台打印sql
    jpa:
        show-sql: true

注意:

  com.mysql.jdbc.Driver 是 mysql5的jdbc驱动

  com.mysql.cj.jdbc.Driver 是 mysql6的jdbc驱动

  需要注意的是com.mysql.cj.jdbc.Driver是要配置时区的,这里配置为 Asia/Shanghai

定义实体类

里面的注解看这里

package com.yt.entity;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
public class Student {
	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY )
	private int id;
	
	 @Column(name = "names", unique = false, nullable = true, length = 50)
	 private String names;
	 
	 @Column(name = "email", length = 30)
	 private String email;

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getNames() {
		return names;
	}

	public void setNames(String names) {
		this.names = names;
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}
	 
}

  定义Repository接口

package com.yt.repository;

import org.springframework.data.jpa.repository.JpaRepository;

import com.yt.entity.Student;

public interface StudentRepository extends JpaRepository<Student,Integer>{

}

    实现service层

   StuService.java 定义了基本的增删改查接口

package com.yt.service;
import com.yt.entity.Student;
public interface StuService {
	 Student saveStudent(Student stu);
	 void deleteStudent(Student stu);
	 void deleteStudent(int id);
	 Student updateStudent(Student stu);
	 Student findStudent(int id);
}

  StuServiceImpl.java StuService接口实现类

package com.yt.service;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.yt.entity.Student;
import com.yt.repository.StudentRepository;

@Service
public class StuServiceImpl implements StuService{
	@Autowired
	private StudentRepository stuRepository;
	
	@Override
	public Student saveStudent(Student stu) {
		Student stu1 = stuRepository.save(stu);
		return stu1;
	}

	@Override
	public void deleteStudent(Student stu) {
		stuRepository.delete(stu);
	}

	@Override
	public void deleteStudent(int id) {
		stuRepository.deleteById(id);
	}

	@Override
	public Student updateStudent(Student stu) {
		return stuRepository.save(stu);
	}

	@Override
	public Student findStudent(int id) {
		return stuRepository.findById(id).get();
	}

}

实现控制器层

package com.yt.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.yt.entity.Student;
import com.yt.service.StuServiceImpl;

@RestController
@RequestMapping(value="stu")
public class StuController {
	@Autowired
	private StuServiceImpl stuSer;
	@GetMapping("add")
	private Student addStu(String names, String email) {
		Student s = new Student();
		s.setNames(names);
		s.setEmail(email);
		return stuSer.saveStudent(s);
	}
	@GetMapping("del")
	private String delStu(Integer id) {
		stuSer.deleteStudent(id);
		return "success";
	}
	@GetMapping("update")
	private Student updateStu(Integer id, String names,String email) {
		Student s = new Student();
		s.setId(id);
		s.setNames(names);
		s.setEmail(email);
		stuSer.updateStudent(s);
		return s;
	}
	@GetMapping("find.html")
	private Student findStu(int id) {
		return stuSer.findStudent(id);
	}
}

运行


  打开浏览器,依次访问下面链接

  新增

  http://localhost:8080/stu/add?names=zhuangzi&email=123@qq.com

  新增Stu用户 names为zhuangzi,email为:123@qq.com

  修改

  http://localhost:8080/stu/add?names=zhuangzi123&email=123456@qq.com&id=1

  将Id为1的用户names为zhuangzi123,email为123456@qq.com

  删除

  http://localhost:8080/stu/del?id=1

  删除id为1的学生

  查询

  http://localhost:8080/student/find?id=1

  查询Id为1的学生


  Springboot data jpa多条件分页排序查询


<