springboot-数据库访问之jpa
什么是springDate?

springData的作用;


整体简化的架构:

JPA :Java Persistence API
如果没有springData 我们需要去学每一种对应的jpa实现,
有了springData就相当于将他们的jpa实现进行了封装。我们只需要学一种规范就行
注:默认springboot使用Hibernate
查看依赖关系图:

这里只给出一部分,就是可以看出来dataJpa 默认可以实现的是hibernate
且自动引入了jdbc
配置数据源:这里直接使用mysql默认的tomcat里面的数据源,不再使用druid数据源了
spring:
datasource:
url: jdbc:mysql://192.168.1.101:3306/jpa
username: root
password: 1997
driver-class-name: com.mysql.cj.jdbc.Driver
JPA也是基于ORM思想的:ORM(Object Relational Mapping);对象关系映射
所以我们需要编写实体类和数据表进行映射
步骤
1,编写一个实体类bean,和数据表进行映射,并设置好映射关系
package com.quan.springbootjpa.entity; import javax.persistence.*;
//使用JPA注解配置映射关系
//这个是实体类
// 告诉JPA这个是一个实体类就是和数据表映射的累
@Entity
@Table(name = "tb1_user")//指定和哪个数据表对应,如果省略表名就是user
public class User { @Id//表明这个是主键
@GeneratedValue(strategy = GenerationType.IDENTITY)//自增主键
private Integer id; @Column(name = "last_name",length = 50) //这是和数据表对应的一个列
private String lastname; @Column//省略的情况下,默认列明就是属性名
private String email; public Integer getId() {
return id;
} public void setId(Integer id) {
this.id = id;
} public String getLastname() {
return lastname;
} public void setLastname(String lastname) {
this.lastname = lastname;
} public String getEmail() {
return email;
} public void setEmail(String email) {
this.email = email;
}
}
2编写一个dao接口来操作实体类对应的数据表(repostity)
package com.quan.springbootjpa.repository; import com.quan.springbootjpa.entity.User;
import org.springframework.data.jpa.repository.JpaRepository; // JpaRepository<T, ID>两个泛型,一个是实体类,一个是主键
//继承 JpaRepository 来完成数据库的操作
public interface UserRepository extends JpaRepository<User,Integer> { }
3基本的配置:基本的配置可以查看Jpaproperties
spring:
datasource:
url: jdbc:mysql://192.168.1.101:3306/jpa
username: root
password: 1997
driver-class-name: com.mysql.cj.jdbc.Driver
jpa:
hibernate:
# 跟新或者创建数据表结构
ddl-auto: update
# 控制台显示SQL
show-sql: true
启动主程序:
因为我们开启了跟新或者创建数据表结构:
即使数据库里面没有这个表,jpa因为开启了ddl_auto : update,可以自动帮我们创建不存在的表
如下面的红色部分所示

4建立Controller测试一下CRUD
package com.quan.springbootjpa.controller; import com.quan.springbootjpa.entity.User;
import com.quan.springbootjpa.repository.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController; @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;
} }
查询

插入语句:加入对应的累的属性参数即可

命令行可以看到执行的SQL语句

springboot-数据库访问之jpa的更多相关文章
- SpringBoot数据库访问(一)--------关系型数据库访问(RDBMS)
关系型数据库访问(RDBMS) 采用JdbcTemplate.MyBatis.JPA.Hibernate等技术. 一.JdbcTemplate工具 在pom.xml添加boot-starter-jdb ...
- SpringBoot:4.SpringBoot整合Mybatis实现数据库访问
在公司项目开发中,使用Mybatis居多.在 SpringBoot:3.SpringBoot使用Spring-data-jpa实现数据库访问 中,这种jpa风格的把sql语句和java代码放到一起,总 ...
- SpringBoot入门 (四) 数据库访问之JdbcTemplate
本文记录在SpringBoot中使用JdbcTemplate访问数据库. 一 JDBC回顾 最早是在上学时接触的使用JDBC访问数据库,主要有以下几个步骤: 1 加载驱动 Class.forName( ...
- springBoot数据库jpa+对接mybatis
1 spring Data jpa hibernate引领数据访问技术,使用orm对象关系映射来进行数据库访问,通过模型和数据库进行映射,通过操作对象实现对数据库操作,把数据库相关操作从代码中独立出 ...
- Springboot数据访问,棒棒哒!
Springboot对数据访问部分提供了非常强大的集成,支持mysql,oracle等传统数据库的同时,也支持Redis,MongoDB等非关系型数据库,极大的简化了DAO的代码,尤其是Spring ...
- spring-boot (三) spring data jpa
学习文章来自:http://www.ityouknow.com/spring-boot.html spring data jpa介绍 首先了解JPA是什么? JPA(Java Persistence ...
- springboot 数据访问【转】【补】
六.SpringBoot与数据访问 1.JDBC pom.xml配置 <dependencies> <dependency> <groupId>org.spring ...
- spring--boot数据库增删改查
spring--boot数据库增删改查 数据库配置:(必须配置),我写的文件是yml的,和properties是相同的 1 spring: 2 datasource: 3 driver-class-n ...
- 三种数据库访问——Spring3.2 + Hibernate4.2
前三篇随笔中介绍了 用原生的JDBC访问数据库.一种高效的数据库连接池druid.用Spring的JDBC框架访问数据库. 本文继续介绍第三种数据库访问的解决方案:Spring3.2 + Hibern ...
- SpringBoot数据访问(一) SpringBoot整合Mybatis
前言 SpringData是Spring提供的一个用于简化数据库访问.支持云服务的开源框架.它是一个伞形项目,包含了大量关系型数据库及非关系型数据库的数据访问解决方案,其设计目的是为了使我们可以快速且 ...
随机推荐
- 单片机中volatile的应用
01.简述 一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了.精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使 ...
- 【C#表达式树 六】表达式树中创建节点的两种方式
创建表达式树节点的两种方式1.用expression的静态方法MakeBinary|MakeUnary(ExpressionType,参数)的方式创建表达式树节点: BinaryExpression ...
- Map<String, String> map按key值排序
private static String buildMd5Params(Map<String, String> map) { StringBuilder result = new Str ...
- ssh静态代理模式讲解与使用
--作者:飞翔的小胖猪 --创建时间:2021年5月18日 --修改时间:2021年5月23日 一.说明 SSH 为建立在应用层基础上的安全协议.SSH 是较可靠专为远程登录会话和其他网络服务提供安全 ...
- 自己创建bmp图像
随便找一张图片,右键选择打开方式为画图,再在画图中保存为bmp即可 如果要保存为png文件,也可以这样
- Python:GUI库tkinter(二)
学习自: Python GUI之tkinter窗口视窗教程大集合(看这篇就够了) - 洪卫 - 博客园 Tkinter简明教程 - 知乎 TkDocs_官方文档 一个Tkinter库较为全面的总结,很 ...
- angular项目grunt serve报错Cannot find where you keep your Bower packages
运行angular项目grunt serve一直报错,截图如下: 无法找到报错Bower包的位置. 解决方法: 1.全局安装bower npm install bower -g 2.检查是否安装成功 ...
- logging日志模块、配置字典
logging日志模块 知识点很多 但是需要掌握的很少(会用即可) import logging # 日志有五个等级(从上往下重要程度不一样) # logging.debug('debug级别') # ...
- 关于SQL优化的辟谣
列举一些关于 SQL 语句的谣言,避免一些生瓜蛋子面试的时候被另外一群生瓜蛋子的 SQL 优化宝典给坑了. 以下所有内容都是 SQL Server 中的,其他数据库只能参考和借鉴 一.全表扫描 全表扫 ...
- 以QT为例谈环境搭建
以QT为例谈环境搭建 作者:哲思 时间:2022.1.5 邮箱:1464445232@qq.com GitHub:zhe-si (哲思) (github.com) 前言 自从实习结束,好久没写博客了. ...