Spring Boot学习笔记19——数据访问(整合JPA)

    科技2022-07-10  101

    1. 认识Spring Data

    1.1 什么是Spring Data

    Spring Data是为了简化构建基于Spring框架应用的数据访问技术,包括非关系数据库、Map-Reduce框架、云数据服务等等;也包含对关系数据库的访问支持

    Spring Data提供数据访问模板类xxxTemplate,如MongoTemplate、RedisTemplate等


    1.2 Spring Data特点

    Spring Data为我们提供使用统一的API来对数据访问层进行操作,这主要是Spring Data Commons项目来实现的。Spring Data Commons让我们在使用关系型/非关系型数据访问技术时都基于Spring提供的统一标准,这个标准包含了CRUD(创建、获取、更新、删除)、查询、排序和分页等相关操作

    1.3 统一的Repository接口

    Repository<T,ID extends Serializable>:统一接口RevisionRepository<T,ID extends Serializable,N extends Number & Comparable< N >>:基于乐观锁机制CrudRepository<T,ID extends Serializable>:基本CRUD操作PagingAndSortingRepository<T,ID extends Serializable>:基本CRUD和分页

    1.4 JPA与Spring Data

    JPA(Java Persistence API,java持久化API),是一种对象/关系映射的工具,管理java中的关系型数据,主要目的是简化现有的持久化开发工作和整合ORM(Object Relational Mapping,对象/关系映射)技术

    JpaRepository基本功能:编写接口解成JpaRepository既有crud功能也有分页等基本功能

    定义符合规范的方法命名:在接口中只需什么符合规范的方法,即拥有对于的功能

    @Query自定义查询,定制查询SQL

    Specification查询(Spring Data JPA支持JPA2.0的Criteria查询)


    2. 整合

    2.1 创建项目

    2.2 整合JPA

    配置数据源(也可以像前面一样配置Druid,这里就直接用默认的)

    spring: datasource: url: jdbc:mysql://localhost/sb-jpa?serverTimezone=UTC username: root password: root driver-class-name: com.mysql.cj.jdbc.Driver initialization-mode: always #springboot2.x以上需要加这一句配置,不然无法执行sql和建表

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

    //使用JPA注解配置映射关系 @Entity//告诉JPA这是一个实体类(和数据表映射的类) @Table(name = "tbl_user")//指定和哪个数据表对应,如果省略默认表名就是user public class User { @Id//表明这是一个主键 @GeneratedValue(strategy = GenerationType.IDENTITY)//自增主键 private Integer id; @Column(name = "lastName",length = 50)//表明和数据库对应的一个列 private String lastName; @Column//省略默认列名就是属性名 private String email; //省略get/set方法和toString方法 }

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

    //继承JpaRepository来完成对数据库的操作 public interface UserRepository extends JpaRepository<User,Integer> { }

    基本的JpaProperties配置

    jpa: hibernate: # 更新或者创建数据表结构 ddl-auto: update # 控制台显示sql show-sql: true

    创建控制器方法controller.UserController

    @RestController public class UserController { @Autowired UserRepository userRepository; @GetMapping("/user/{id}") public User getUser(@PathVariable("id") Integer id){ User user=userRepository.findById(id).get(); return user; } @GetMapping("/user") public User insertUser(User user){ User save = userRepository.save(user); return save; } }

    运行项目,在浏览器访问http://localhost:8080/user?lastName=tiaotiao&email=aa 再看看数据库 成功帮我们建表,同时插入了指定数据


    该SpringBoot学习笔记学习自雷神前辈,是对知识点的整理和自我认识的梳理,如有不当之处,欢迎指出

    Processed: 0.042, SQL: 8