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语句


浙公网安备 33010602011771号