JPA是java Persistence API简称,中文名:java持久层API,JPA是JCP组织发布的J2EE标准之一
1.创建DataSource连接池对象
1 <dependency> 2 <groupId>org.springframework.boot</groupId> 3 <artifactId>spring-boot-starter-jdbc</artifactId> 4 </dependency> 5 <!-- 数据库驱动 --> 6 <dependency> 7 <groupId>com.oracle</groupId> 8 <artifactId>ojdbc6</artifactId> 9 <version>11.2.0.3</version> 10 </dependency>
2.在pom.xml中定义spring-boot-starter-data-jpa
1 <!-- 定义spring-boot-starter-data-jpa --> 2 <dependency> 3 <groupId>org.springframework.boot</groupId> 4 <artifactId>spring-boot-starter-data-jpa</artifactId> 5 </dependency>
3.根据数据库表定义实体类
1 package cn.xdl.entity; 2 3 import java.io.Serializable; 4 5 import javax.persistence.Column; 6 import javax.persistence.Entity; 7 import javax.persistence.Id; 8 import javax.persistence.Table; 9 10 @Entity 11 @Table(name="EMP") //通常和@Entity配合使用,只能标注在实体的class定义处,表示实体对应的数据库表的信息 12 public class Emp implements Serializable{ 13 /** 14 * 15 */ 16 private static final long serialVersionUID = 1L; 17 @Id //定义了映射到数据库表的主键的属性,一个实体只能有一个属性被映射为主键置于getXxxx()前 18 @Column(name="EMPNO") //name表示表的名称默认地,表名和实体名称一致,只有在不一致的情况下才需要指定表名 19 private Integer empno; 20 @Column(name="ENAME") 21 private String ename; 22 @Column(name="JOB") 23 private String job; 24 @Column(name="MGR") 25 private int mgr; 26 public Integer getEmpno() { 27 return empno; 28 } 29 public void setEmpno(Integer empno) { 30 this.empno = empno; 31 } 32 public String getEname() { 33 return ename; 34 } 35 public void setEname(String ename) { 36 this.ename = ename; 37 } 38 public String getJob() { 39 return job; 40 } 41 public void setJob(String job) { 42 this.job = job; 43 } 44 public int getMgr() { 45 return mgr; 46 } 47 public void setMgr(int mgr) { 48 this.mgr = mgr; 49 } 50 @Override 51 public String toString() { 52 return "Emp [empno=" + empno + ", ename=" + ename + ", job=" + job + ", mgr=" + mgr + "]"; 53 } 54 }
4.定义Dao接口,继承JPA功能接口
1 package cn.xdl.jpa; 2 3 import org.springframework.data.jpa.repository.JpaRepository; 4 5 import cn.xdl.entity.Emp; 6 //JpaRepository:JPA资源库 7 /** 8 * 1.所有继承该接口的都被spring所管理,改接口作为标识接口,功能就是用来控制domain模型的 9 * 2.Spring Data可以让我们只定义接口,只要遵循spring data的规范,无需写实现类。 10 * 11 */ 12 public interface EmpDao extends JpaRepository<Emp, Integer>{ 13 14 }
5.获取Dao接口对象操作数据库
1 @SpringBootApplication 2 public class MyBootApplication { 3 public static void main(String[] args) throws SQLException { 4 ApplicationContext ioc = SpringApplication.run(MyBootApplication.class, args); 5 // 自动配置创建DataSource,id名为dataSource 6 DataSource ds = ioc.getBean("dataSource", DataSource.class); 7 System.out.println(ds); 8 System.out.println("================="); 9 System.out.println("================="); 10 System.out.println("================="); 11 EmpDao empDao = ioc.getBean("empDao", EmpDao.class); 12 /** 13 * 遍历 14 */ 15 List<Emp> empdatas = empDao.findAll(); 16 for (Emp emp : empdatas) { 17 System.out.println(emp); 18 } 19 } 20 }