1.引入依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.8.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>jpa</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>jpa</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>8.0.11</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
2.配置yml文件
server:
port: 10088
spring:
datasource:
url: jdbc:mysql://127.0.0.1:3306/echarts?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8&useSSL=false&autoReconnect=true
username: root
password: 123
driver-class-name: com.mysql.cj.jdbc.Driver
jpa:
database: mysql
hibernate:
ddl-auto: update #第一次创建 第二次更新
show-sql: true #显示sql
main:
allow-bean-definition-overriding: true
3.创建实体类
package com.example.jpa.entity;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
@Entity //通过@Entity 表明是一个映射的实体类,与数据库中的表相对应
public class Account {
/**
* @GeneratedValue:设置主键id的生成策略。Jpa支持4种生成策略:
* TABLE:使用一个特定的数据库表格来保存主键
* SEQUENCE:根据底层数据库的序列来生成主键,需要数据库支持序列。
* IDENTITY:主键由数据库自动生成(主要是自动增长型)
* AUTO:主键由程序控制(JPA默认)
*/
@Id //id
@GeneratedValue(strategy = GenerationType.IDENTITY) //自动增长
private int id;
private String name;
private double money;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getMoney() {
return money;
}
public void setMoney(double money) {
this.money = money;
}
}
4.mapper
package com.example.jpa.dao;
import com.example.jpa.entity.Account;
import org.springframework.data.jpa.repository.JpaRepository;
/**
* 数据访问层,通过编写一个继承自 JpaRepository 的接口就能完成数据访问,其中包含了几本的单表查询的方法,非常的方便。
* 值得注意的是,这个Account 对象名,而不是具体的表名,另外Interger是主键的类型
*/
public interface AccountRepository extends JpaRepository<Account,Integer> {
}
5.控制层
package com.example.jpa.controller;
import com.example.jpa.dao.AccountRepository;
import com.example.jpa.entity.Account;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/account")
public class AccountController {
@Autowired
private AccountRepository accountRepository;
/**
* 查询所有的列表
* @return
*/
@RequestMapping(value="/list",method= RequestMethod.GET)
public List<Account> getAccount(){
return accountRepository.findAll();
}
/**
* 根据id查询所需要的数据
* @param id
* @return
*/
@RequestMapping(value = "/{id}",method = RequestMethod.GET)
public Account getAccountById(@PathVariable("id") int id){
return accountRepository.getOne(id);
}
/**
* 根据id更新数据
* @param id
* @param name
* @param money
* @return
*/
@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 = accountRepository.saveAndFlush(account);
return account1.toString();
}
/**
* 增加数据
* @param name
* @param monry
* @return
*/
@RequestMapping(value = "",method = RequestMethod.POST)
public String postAccount(@RequestParam("name")String name,@RequestParam("monry")double monry){
Account account = new Account();
account.setMoney(monry);
account.setName(name);
Account save = accountRepository.save(account);
return save.toString();
}
/**
* 删除
* @param id
*/
@RequestMapping(value = "/{id}",method = RequestMethod.DELETE)
public void deleteAccount(@PathVariable("id")int id){
accountRepository.deleteById(id);
}
}
6.结果