SpringDataJpa入门使用(天问)

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

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值