轉(zhuǎn)載請標明出處:
http://blog.csdn.net/forezp/article/details/70545038
本文出自方志朋的博客
JPA全稱Java Persistence API.JPA通過JDK 5.0注解或XML描述對象-關(guān)系表的映射關(guān)系侥猬,并將運行期的實體對象持久化到數(shù)據(jù)庫中焕盟。
JPA 的目標之一是制定一個可以由很多供應(yīng)商實現(xiàn)的API,并且開發(fā)人員可以編碼來實現(xiàn)該API救赐,而不是使用私有供應(yīng)商特有的API。
JPA是需要Provider來實現(xiàn)其功能的,Hibernate就是JPA Provider中很強的一個,應(yīng)該說無人能出其右稠集。從功能上來說,JPA就是Hibernate功能的一個子集饥瓷。
添加相關(guān)依賴
添加spring-boot-starter-jdbc依賴:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa
</artifactId>
</dependency>
添加mysql連接類和連接池類:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
配置數(shù)據(jù)源剥纷,在application.properties文件配置:
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&characterSetResults=utf8
username: root
password: 123456
jpa:
hibernate:
ddl-auto: update # 第一次簡表create 后面用update
show-sql: true
注意,如果通過jpa在數(shù)據(jù)庫中建表呢铆,將jpa.hibernate,ddl-auto改為create晦鞋,建完表之后,要改為update,要不然每次重啟工程會刪除表并新建刺洒。
創(chuàng)建實體類
通過@Entity 表明是一個映射的實體類鳖宾, @Id表明id, @GeneratedValue 字段自動生成
@Entity
public class Account {
@Id
@GeneratedValue
private int id ;
private String name ;
private double money;
... 省略getter setter
}
Dao層
數(shù)據(jù)訪問層逆航,通過編寫一個繼承自 JpaRepository 的接口就能完成數(shù)據(jù)訪問,其中包含了幾本的單表查詢的方法鼎文,非常的方便。值得注意的是因俐,這個Account 對象名拇惋,而不是具體的表名,另外Interger是主鍵的類型抹剩,一般為Integer或者Long
public interface AccountDao extends JpaRepository<Account,Integer> {
}
Web層
在這個栗子中我簡略了service層的書寫撑帖,在實際開發(fā)中,不可省略澳眷。新寫一個controller胡嘿,寫幾個restful api來測試數(shù)據(jù)的訪問。
@RestController
@RequestMapping("/account")
public class AccountController {
@Autowired
AccountDao accountDao;
@RequestMapping(value = "/list", method = RequestMethod.GET)
public List<Account> getAccounts() {
return accountDao.findAll();
}
@RequestMapping(value = "/{id}", method = RequestMethod.GET)
public Account getAccountById(@PathVariable("id") int id) {
return accountDao.findOne(id);
}
@RequestMapping(value = "/{id}", method = RequestMethod.PUT)
public String updateAccount(@PathVariable("id") int id, @RequestParam(value = "name", required = true) String name,
@RequestParam(value = "money", required = true) double money) {
Account account = new Account();
account.setMoney(money);
account.setName(name);
account.setId(id);
Account account1 = accountDao.saveAndFlush(account);
return account1.toString();
}
@RequestMapping(value = "", method = RequestMethod.POST)
public String postAccount(@RequestParam(value = "name") String name,
@RequestParam(value = "money") double money) {
Account account = new Account();
account.setMoney(money);
account.setName(name);
Account account1 = accountDao.save(account);
return account1.toString();
}
}
通過postman請求測試钳踊,代碼已經(jīng)全部通過測試衷敌。
源碼下載:https://github.com/forezp/SpringBootLearning
參考資料
優(yōu)秀文章推薦:
- 更多springboot 教程:springBoot非官方教程 | 文章匯總
- 更多springcoud 教程:史上最簡單的 SpringCloud 教程 | 文章匯總