zoukankan      html  css  js  c++  java
  • SpringBoot入门-JPA(三)

    什么是JPA

    JPA全称Java Persistence API.JPA通过JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。

    pom.xml

        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>1.5.2.RELEASE</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
    
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
            <java.version>1.8</java.version>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>1.16.18</version>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-data-jpa</artifactId>
            </dependency>
    
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>6.0.6</version>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </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>

    apllication.yml

    server:
      port: 8080
    
    spring:
      datasource:
        driver-class-name: com.mysql.jdbc.Driver
        username: root
        password: root
        url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&serverTimezone=GMT%2B8
    
      jpa:
        hibernate:
          ddl-auto: update
        show-sql: true

    Dao

    import com.vast.entity.Account;
    import org.springframework.data.jpa.repository.JpaRepository;
    /** JPA中提供的crud的方法,可以直接进行调用。泛型中Account指要操作的数据库对应的实体类;Integer指的是该实体类对应的主键的类型 */
    public interface IAccountDao extends JpaRepository<Account,Integer> {
    }

    Controller(请求方式是Restfull风格)

    package com.vast.controller;
    
    import com.vast.dao.IAccountDao;
    import com.vast.entity.Account;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.web.bind.annotation.*;
    
    import java.util.List;
    
    @RestController
    @RequestMapping("/account")
    public class HomeController {
        @Autowired
        private IAccountDao accountDao;
    
        @Value("${my.name}")
        private String name;
        @Value("${my.age}")
        private int age;
    
        @GetMapping("/home")
        public String homePage(){
            return name.concat("13__" + age);
        }
    
        @GetMapping("/{id}")
        public Account getAccountById(@PathVariable(value = "id") int id){
    
            return accountDao.findOne(id);
        }
    
        @GetMapping("/list")
        public List<Account> getAccounts(){
            return accountDao.findAll();
        }
    
        @RequestMapping(value = "",method = RequestMethod.POST)
        public String postAccount(@RequestParam(value = "name") String name,
                                  @RequestParam(value = "money") double money) {
            Account account = new Account();
            account.setName(name);
            account.setMoney(money);
    
            Account saveAccountResult = accountDao.save(account);
    
            return saveAccountResult.toString();
        }
    
        @PutMapping("/{id}")
        public String updateAccountById(@PathVariable (value = "id") int id,
                                        @RequestParam(value = "name",required=false) String name,
                                        @RequestParam(value = "money",required=false) double money){
    
            Account account = new Account();
            account.setName(name);
            account.setMoney(money);
            account.setId(id);
    
            Account account1 = accountDao.saveAndFlush(account);
    
            return account1.toString();
        }
    
    }
  • 相关阅读:
    IP查询网和traceroute找到的网络出口不一致的原因
    [转载] 深入理解VMware虚拟机网络通信原理
    https工作流程
    HTTP1.1协议-RFC2616-中文版
    条件变量调用Signal的时候是否需要持有mutex
    HTTP Get一定是幂等的吗,统计访问量的时候呢?
    unix网络编程
    MySQL-SQL基础-DCL
    MySQL-SQL基础-查询1
    MySQL-SQL基础-子查询
  • 原文地址:https://www.cnblogs.com/yanduanduan/p/12000898.html
Copyright © 2011-2022 走看看