1、Jpa简介:
JPA是Java Persistence API的简称,中文名Java持久层API,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。
2.springboot整合jpa
1.导入相关pom依赖(新建已有)
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
2.application.yml文件配置
spring:
jpa:
hibernate:
ddl-auto: update
show-sql: true
ddl-auto: create 无论数据库有无你要创建的表 每次启动都是一个新的数据库,也是导致数据丢失的重要原因。
ddl-auto: update 最常用的属性值 已有你要创建的表就不动 没有就新建
3、使用jpa完成自动建表功能:
3-1:实体类示例:
package com.zking.springbootxxx.entity;
import javax.persistence.*;
/**
* @author HYT
* @site
* @company
* @create 2019-02-23 14:06
*/
@Entity //实体类注解
@Table(name="t_springboot_order") //数据库表明
public class Order {
@Id //主键id
@GeneratedValue //自动增长
private Integer oid;
@Column(length = 18) //表中字段,长度18
private String oname;
@Column
private Float oprice;
public Integer getOid() {
return oid;
}
public void setOid(Integer oid) {
this.oid = oid;
}
public String getOname() {
return oname;
}
public void setOname(String oname) {
this.oname = oname;
}
public Float getOprice() {
return oprice;
}
public void setOprice(Float oprice) {
this.oprice = oprice;
}
}
自动生成后,数据库会产生两个表,一个是 t_hibernate_sequence和你自己生成的表t_springboot_order
t_hibernate_sequence是用来生成id的,存放id,如果一个数据库生成多个数据表,共用一个hibernate_sequence表;
4.增删改查
dao
package com.zking.springbootxxx.dao;
import com.zking.springbootxxx.entity.Order;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import java.awt.print.Book;
/**
* @author HYT
* @site
* @company
* @create 2019-02-23 14:21
* JpaRepository:继成后,可实现简单的增删改查
* 第一个参数:操作的实体类
* 第二个参数:实体类对应数据表的主键
* JpaSpecificationExecutor :继承后,能执行复杂的sql查询
*
*/
public interface OrderDao extends JpaRepository<Order,Integer>,JpaSpecificationExecutor<Order>{
}
controller层
@Autowired
private OrderDao orderDao;
@RequestMapping("/add")
public String add(Order order){
jpaDao.save(order);
return "success";
}
@RequestMapping("/edit")
public String edit(Order order){
jpaDao.save(order);
return "success";
}
@RequestMapping("/del")
public String del(Order order){
jpaDao.delete(order);
return "success";
}
@RequestMapping("/getOne")
public Book getOne(Integer oid){
// 会出现懒加载问题:org.hibernate.LazyInitializationException: could not initialize proxy - no Session
// return jpaDao.getOne(oid);
return jpaDao.findById(oid).get();
}
@RequestMapping("/getAll")
public List<Book> getAll(){
return jpaDao.findAll();
}
浏览器访问: