Springboot-maven--jpa-simple-example

来源:互联网 发布:算法导论 kindle 编辑:程序博客网 时间:2024/05/26 22:56

Springboot-maven--jpa-simple-example

(1)整体构架:



(2)application.yml


########## 数据库 ##########

spring:

  datasource:

    url: jdbc:mysql://localhost:3306/db_test?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true

    password:

    username: root

    hikari:

      minimum-idle: 30

      maximum-pool-size: 100

  jpa:

    hibernate:

      ddl-auto: update

/*

ddl-auto:的取值

 

create:

每次加载hibernate时都会删除上一次的生成的表,然后根据你的model类再重新来生成新表,哪怕两次没有任何改变也要这样执行,这就是导致数据库表数据丢失的一个重要原因。

create-drop :

每次加载hibernate时根据model类生成表,但是sessionFactory一关闭,表就自动删除。

update:

最常用的属性,第一次加载hibernate时根据model类会自动建立起表的结构(前提是先建立好数据库),以后加载hibernate时根据 model类自动更新表结构,即使表结构改变了但表中的行仍然存在不会删除以前的行。要注意的是当部署到服务器后,表结构是不会被马上建立起来的,是要等 应用第一次运行起来后才会。

validate :

每次加载hibernate时,验证创建数据库表结构,只会和数据库中的表进行比较,不会创建新表,但是会插入新值。


*/


(3)pom.xml


<?xml version="1.0"encoding="UTF-8"?>
<projectxmlns="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.0http://maven.apache.org/xsd/maven-4.0.0.xsd"
>
   <modelVersion>4.0.0</modelVersion>

   <groupId>com.amaker</groupId>
   <artifactId>springbootdemo</artifactId>
   <version>0.0.1-SNAPSHOT</version>

   <name>springbootdemo</name>
   <description>Demo project for Spring Boot</description>

   <parent>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-parent</artifactId>
      <version>1.5.8.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.springframework.boot</groupId>
         <artifactId>spring-boot-starter-data-jpa</artifactId>
      </dependency>
      <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-web</artifactId>
      </dependency>

      <dependency>
         <groupId>mysql</groupId>
         <artifactId>mysql-connector-java</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>


</project>


(4)girl.java


package com.amaker;


import javax.persistence.*;


/**

 * Created by Administrator on 2017/11/15.

 */

@Entity

@Table(name = "girl")

public class Girl {

    @Id

    @GeneratedValue(strategy = GenerationType.AUTO)

    private Integer id;

    @Column(name = "name")

    private String name;

    @Column(name = "age")

    private Integer age;


    public Girl(){}

    public Integer getId() {

        return id;

    }


    public void setId(Integer id) {

        this.id = id;

    }


    public String getName() {

        return name;

    }


    public void setName(String name) {

        this.name = name;

    }


    public Integer getAge() {

        return age;

    }


    public void setAge(Integer age) {

        this.age = age;

    }

}



(5) GirlRepository.java

package com.amaker;


import org.springframework.data.jpa.repository.JpaRepository;


import java.util.List;


/**

 * Created by Administrator on 2017/11/16.

 */

/*只需要继承Repository接口 底层接口是JpaRepository Spring Data 自己封装的JPA接口类 

还有CrudRepository接口,继承Repository,有基本的增删改查的方法 

PagingAndSortingRepository接口,继承Repository,有分页和排序的方法 */

public interface GirlRepository extends JpaRepository<Girl,Integer> {

    public List<Girl> findByAge(Integer age);

}


(6) GirlController.java
package com.amaker;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * Created by Administrator on 2017/11/16.
 */
/*@RestController是@Controller和@ResponseBody的结合体,两个标注合并起来的作用。*/
@RestController
public class GirlController {
    @Autowired
    private GirlRepository girlRepository;
    //查询
    @GetMapping(value="/girls")
    public List<Girl> girlList(){
        return girlRepository.findAll();
    }

    //添加
    @PostMapping(value="/add")
    public Girl girlAdd(@RequestParam("name") String name,@RequestParam("age") Integer age){
       Girl girl=new Girl();
        girl.setAge(age);
        girl.setName(name);
        return girlRepository.save(girl);
    }
    //修改
    @PutMapping(value="/update/{id}")
    public void girlUpdate(@PathVariable("id") Integer id,@RequestParam("age") Integer age,@RequestParam("name") String name){
        Girl girl=new Girl();
        girl.setId(id);
        girl.setName(name);
        girl.setAge(age);
        girlRepository.save(girl);
    }
    //删除
    @DeleteMapping(value="/delete/{id}")
    public void girlDelete(@PathVariable("id") Integer id){
        girlRepository.delete(id);
    }
    //按年龄查,接口要定义
    @GetMapping(value="/girl/{age}")
    public List<Girl> findByAge(@PathVariable("age") Integer age){
        return girlRepository.findByAge(age);
    }

}

(7) SpringbootdemoApplication.java
package com.amaker;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplicationpublic class SpringbootdemoApplication {   public static void main(String[] args) {      SpringApplication.run(SpringbootdemoApplication.class, args);   }}


8)数据库
(9)此刻代码已经撸好,我们来体验一把---à下载postman工具安装好--à启动postman-à运行程序
//查询--à点击send

//添加
先在postman地址栏输入
之后输入下面key value值点击send







//修改-àsend




//删除





//按年龄查询
说点什么吧:
1)像这种出现红体,但是无法导入包

解决方法:右击工程名—>找到maven—>Reimport,之后导入包即可
2)无法自动创建表,但是不报错,可能配置文件有问题,多检查,也可以用上面的datasource这种方法!!!