Spring Boot整合Spring Data JPA

1)加入依赖

  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-data-jpa</artifactId>
  4. </dependency>
  5. <dependency>
  6. <groupId>mysql</groupId>
  7. <artifactId>mysql-connector-java</artifactId>
  8. <scope>runtime</scope>
  9. </dependency>

2)增加配置(application.properties)

  1. server.port=8080
  2. server.servlet.context-path=/
  3. # database configuration
  4. spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
  5. spring.datasource.url=jdbc:mysql://localhost:3306/blog?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf-8
  6. spring.datasource.username=root
  7. spring.datasource.password=123
  8. # jpa configuration
  9. # 更新或者创建数据库表结构
  10. spring.jpa.hibernate.ddl-auto=update
  11. # 控制台打印sql语句
  12. spring.jpa.show-sql=true
  13. spring.jpa.open-in-view=false
  14. # log configuration
  15. logging.level.root=info

3)编写一个实体类(bean)和数据表进行映射,并且配置好映射关系

  1. import javax.persistence.Column;
  2. import javax.persistence.Entity;
  3. import javax.persistence.GeneratedValue;
  4. import javax.persistence.GenerationType;
  5. import javax.persistence.Id;
  6. import javax.persistence.Table;
  7. import javax.validation.constraints.NotBlank;
  8. /**
  9. * 使用JPA注解配置映射关系
  10. * Created by zxf on 2019年9月30日
  11. */
  12. @Entity // 告诉JPA这是一个实体类(和数据库映射的类)
  13. @Table(name = "t_type") // @Table来指定和哪个数据表对应,如果省略默认表名就是类名首字母小写
  14. public class Type {
  15. @Id // 表明这是一个主键
  16. @GeneratedValue(strategy = GenerationType.IDENTITY) // 自增主键
  17. private Long id;
  18. @Column(name = "last_name", length = 50) // 这是和数据表对应的一个列,省略默认列名就是属性名
  19. private String name;
  20. }

3)编写一个Dao接口来操作实体类对应的数据表

  1. import org.springframework.data.jpa.repository.JpaRepository;
  2. /**
  3. * Created by zxf on 2019年10月1日
  4. */
  5. // 第一个泛型表示操作的类是Type,第二个泛型Long表示Type的主键id为Long类型
  6. public interface TypeRepository extends JpaRepository<Type, Long> {
  7. // 定义自己的方法
  8. Type findTypeByName(String name);
  9. }

4)service层调用测试

  1. import java.util.List;
  2. import java.util.Optional;
  3. import javax.transaction.Transactional;
  4. import org.springframework.beans.BeanUtils;
  5. import org.springframework.beans.factory.annotation.Autowired;
  6. import org.springframework.data.domain.Page;
  7. import org.springframework.data.domain.Pageable;
  8. import org.springframework.stereotype.Service;
  9. import com.fei.NotFoundException;
  10. import com.fei.po.Type;
  11. import com.fei.repository.TypeRepository;
  12. import com.fei.service.TypeService;
  13. /**
  14. * Created by zxf on 2019年10月1日
  15. */
  16. @Service
  17. @Transactional
  18. public class TypeServiceImpl implements TypeService {
  19. @Autowired
  20. private TypeRepository typeRepository;
  21. /**
  22. * 保存一个分类
  23. *
  24. * @param type
  25. * @return
  26. */
  27. @Override
  28. public Type saveType(Type type) {
  29. return typeRepository.save(type);
  30. }
  31. /**
  32. * 根据id获得一个分类对象
  33. *
  34. * @param id
  35. * @return
  36. */
  37. @Override
  38. public Type getType(Long id) {
  39. return typeRepository.findById(id).get();
  40. }
  41. /**
  42. * 根据分页参数查询一个分类列表
  43. *
  44. * @param pageable
  45. * @return
  46. */
  47. @Override
  48. public Page<Type> listType(Pageable pageable) {
  49. return typeRepository.findAll(pageable);
  50. }
  51. /**
  52. * 更新分类
  53. *
  54. * @param id
  55. * @param type
  56. * @return
  57. */
  58. @Override
  59. public Type updateType(Long id, Type type) {
  60. Type t = typeRepository.findById(id).get();
  61. if (t == null) {
  62. throw new NotFoundException("类型不存在");
  63. }
  64. BeanUtils.copyProperties(type, t);
  65. return typeRepository.save(t);
  66. }
  67. /**
  68. * 根据id删除一个分类
  69. *
  70. * @param id
  71. */
  72. @Override
  73. public void deleteType(Long id) {
  74. typeRepository.deleteById(id);
  75. }
  76. /**
  77. * 根据名字查询一个分类对象
  78. *
  79. * @param name
  80. * @return
  81. */
  82. @Override
  83. public Type getTypeByName(String name) {
  84. return typeRepository.findTypeByName(name);
  85. }
  86. /**
  87. * 不带参数的查询所有分类
  88. *
  89. * @return
  90. */
  91. @Override
  92. public List<Type> listType() {
  93. return typeRepository.findAll();
  94. }
  95. }

Spring Boot 整合Spring Data JPA的更多相关文章

  1. Spring boot 整合spring Data JPA+Spring Security+Thymeleaf框架(上)

    近期上班太忙所以耽搁了给大家分享实战springboot 框架的使用. 以下是spring boot 整合多个框架的使用. 首先是准备工作要做好. 第一  导入框架所需的包,我们用的事maven 进行 ...

  2. spring boot整合spring Data JPA和freemarker

    1.spring Data JPA简介 是一个替代hibernate的一个作用于数据库的框架. 2.整合 1.导入依赖 <dependency> <groupId>org.sp ...

  3. Spring Boot整合Spring Data JPA

    1.JPA 2.Spring Data JPA 3.导入依赖 4.连接数据库 5.实体类 6.Repository 7.测试 1.JPA JPA是Java Persistence API的简称,中文名 ...

  4. Spring Boot 整合Spring Data以及rabbitmq,thymeleaf,向qq邮箱发送信息

    首先得将自己的qq开启qq邮箱的POP3/SMTP服务 说明: p,e为路由key. 用户系统完成登录的时候,将{手机号-时间-IP}保存到队列Phone-queue中,msg-sys系统获得消息打印 ...

  5. Spring Boot整合Spring Security

    Spring Boot对于该家族的框架支持良好,但是当中本人作为小白配置还是有一点点的小问题,这里分享一下.这个项目是使用之前发布的Spring Boot会员管理系统重新改装,将之前filter登录验 ...

  6. Spring Boot整合Spring Security自定义登录实战

    本文主要介绍在Spring Boot中整合Spring Security,对于Spring Boot配置及使用不做过多介绍,还不了解的同学可以先学习下Spring Boot. 本demo所用Sprin ...

  7. Spring Boot整合Spring Security总结

    一.创建Spring Boot项目 引入Thymeleaf和Web模块以及Spring Security模块方便进行测试,先在pom文件中将 spring-boot-starter-security ...

  8. Spring Boot整合Spring Batch

    引言 Spring Batch是处理大量数据操作的一个框架,主要用来读取大量数据,然后进行一定的处理后输出指定的形式.比如我们可以将csv文件中的数据(数据量几百万甚至几千万都是没问题的)批处理插入保 ...

  9. Spring Boot整合Spring Session实战

    传统java web应用session都是由应用服务器(如tomcat)保存在内存中,这对应但节点应用来说没问题:但对于应用集群来说会造成各节点之间的session无法共享,一个节点挂掉后,其他节点接 ...

随机推荐

  1. 阶段3 1.Mybatis_11.Mybatis的缓存_4 mybatis一对多实现延迟加载

    改成单表查询 首先配置的是select.他需要配置的值是accountDao中的方法,查询所有的账户,但是必须有条件.根据用户的id column配置的是id.因为要用user表的id去关联查询 Ac ...

  2. 自动爬取代理IP例子

    import time import json import datetime import threading import requests from lxml import etree from ...

  3. springMVC+Spring+Mybatis+Redis

    SPRINGMVC+MYBATIS+SPRING+REDIS 只作参考,以防忘记使用! mybatis的配置文件: <?xml version="1.0" encoding= ...

  4. ARTS-3

    ARTS的初衷 Algorithm:主要是为了编程训练和学习.每周至少做一个 leetcode 的算法题(先从Easy开始,然后再Medium,最后才Hard).进行编程训练,如果不训练你看再多的算法 ...

  5. postman杂记

    接到测试任务,测试6个接口 rap2 上的接口比较多,整体导出内容太多 就一个接口一个接口的,复制到了postman上 rap2部分接口,开发没有备注简介内容:通知开发备注下 对接口的理解,还是靠功能 ...

  6. jmap -heap命令用法

    用jmap -heap命令可以查看linux堆内存分布 具体用法 1:先查出tomcat的进程号 例如: 然后执行 jmap -heap 7095 可以打印出整体的堆信息   可以看到经过分配的存活区 ...

  7. python每日一练:0007题

    第 0007 题: 有个目录,里面是你自己写过的程序,统计一下你写过多少行代码.包括空行和注释,但是要分别列出来. # -*- coding:utf-8 -*- import os def count ...

  8. 5.使用github脚本LAZY----几个最好的发行版----自定义终端----基本命令

    使用现成的脚本 LAZY * 如果您不想手动设置,可以用这个脚本帮您设置 访问:github.com/arismelachroinos/lscript sudo apt-get git git clo ...

  9. APIView的流程分析

     APIView的流程分析 1.入口,因为视图类的继承APIView()的 as_view()是一个绑定类的方法 2.进入as_view(),正好这个as_view()有个返回值 返回的是dispat ...

  10. OSPF与ACL 综合应用

    1.企业内网运行OSPF路由协议,区域规划如图所示:2.财务和研发所在的区域不受其他区域链路不稳定性影响:3.R1.R2.R3只允许被IT登录管理:4.YF和CW之间不能互通,但都可以与IT互通:5. ...