SpringDataJpa入门使用(天问)

1.引入依赖



    4.0.0
    
        org.springframework.boot
        spring-boot-starter-parent
        2.1.8.RELEASE
         
    
    com.example
    jpa
    0.0.1-SNAPSHOT
    jpa
    Demo project for Spring Boot

    
        1.8
    

    
        
            org.springframework.boot
            spring-boot-starter-data-jdbc
        
        
            org.springframework.boot
            spring-boot-starter-data-jpa
        
        
            org.springframework.boot
            spring-boot-starter-jdbc
        
        
            org.springframework.boot
            spring-boot-starter-web
        

        
            mysql
            mysql-connector-java
            8.0.11
        
        
            org.springframework.boot
            spring-boot-starter-test
            test
        
    

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    


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 {
}

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  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.结果

SpringDataJpa入门使用(天问)_第1张图片

 

SpringDataJpa入门使用(天问)_第2张图片

SpringDataJpa入门使用(天问)_第3张图片

SpringDataJpa入门使用(天问)_第4张图片

SpringDataJpa入门使用(天问)_第5张图片

SpringDataJpa入门使用(天问)_第6张图片

 

 

 

 

 

 

 

 

你可能感兴趣的:(SpringDataJpa)