JpaRepository继承自PagingAndSortingRepository接口,JpaRepository基于JPA的Repository接口,极大减少了JPA作为数据访问的代码,JpaRepository是实现Spring Data JPA技术访问数据库的关键接口。
示例:简单条件查询(通过eclipse软件实现)
选择基本依赖
配置数据库
#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的学生