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

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
  1. 配置数据源(也可以像前面一样配置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和建表
    
  2. 编写一个实体类(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方法
    }
    
  3. 编写一个Dao接口来操作实体类对应的数据表(Repository)

    //继承JpaRepository来完成对数据库的操作
    public interface UserRepository extends JpaRepository<User,Integer> {
    }
    
  4. 基本的JpaProperties配置

    	jpa:
    		hibernate:
      			# 更新或者创建数据表结构
      			ddl-auto: update
    		 # 控制台显示sql
    		show-sql: true
    
  5. 创建控制器方法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;
    	}
    }
    
  6. 运行项目,在浏览器访问http://localhost:8080/user?lastName=tiaotiao&email=aa
    运行结果
    再看看数据库
    数据库 成功帮我们建表,同时插入了指定数据


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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值