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提供的一个用于简化数据库访问.支持云服务的开源框架.它是一个伞形项目,包含了大量关系型数据库及非关系型数据库的数据访问解决方案,其设计目的是为了使我们可以快速且 ...
随机推荐
- HBase学习记录-API
delete.addColumns()和delete.addColumn()的区别 /** * delete.addColumns(); * delete.addColumn(); * 区别: * a ...
- Excel和BI工具,哪一个数据分析能力更强
随着大数据信息时代的到来,大数据分析已经成为任何企业都无法回避的话题.对于想进入大数据分析行业的朋友来说,这也是必须掌握的基础知识.什么是大数据分析?为什么会对企业产生这么大的影响? 大数据分析是在通 ...
- Nested Class(嵌套类)
在类.结构或接口中定义的类型称为嵌套类型. 例如 public class Container { class Nested { Nested() { } } } 不论外部类型是类.接口还是构造,嵌套 ...
- Excel:替换表格中的0值
替换时需要勾选"单元格匹配",否则会把所有单元格中的0字符都给替换掉
- Python:numpy
学习自:NumPy 教程 | 菜鸟教程 官网:Numpy官方文档 1.简介 numpy主要用于数组计算,包含: 1)一个强大的N维数组对象ndarray 2)广播功能函数 3)整合 C/C++/For ...
- (转载)虚拟化(3):os调度策略。
转自:https://zhuanlan.zhihu.com/p/38046313 这一章主要是介绍几个简单的调度器策略.内容比较简单,就简单汇总下. 首先我们对现有的计算机环境有如下几个假设: 1.每 ...
- Navicat v15 破解
特别注意: 1.断网,否则在安装过程中会失败 2.关闭防火墙及杀毒软件 3.选择对应版本:mysql版就选择mysql 4.如果出现 就卸载,删除注册表,重新安装,出现rsa public key n ...
- 拓扑排序 python
现在你总共有 numCourses 门课需要选,记为 0 到 numCourses - 1.给你一个数组 prerequisites ,其中 prerequisites[i] = [ai, bi] , ...
- linux 常用命令:
查看启动进程命令 ps -ef | grep donet 1.vi 进入编辑界面 2.ls,ll 查看命令 3.cd 进入命令 4.i 进入插入界面 5. esc 退出编辑界面 6.输入:冒号,进入 ...
- Nginx高并发实现原理以及常用的优化手段
Nginx 是如何实现高并发的? 异步,非阻塞,使用了epoll 和大量的底层代码优化. 如果一个server采用一个进程负责一个request的方式,那么进程数就是并发数.正常情况下,会有很多进程一 ...