Spring Boot 学习之路五,数据库二 ,JpaRepository

Spring Boot 学习之路五,数据库二 ,JpaRepository_第1张图片
结构.png

首先我们创建一个数据库映射的实体类,上一节讲了的

package com.alun;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

/**
 * Created by Administrator on 2017/5/29.
 */
@Entity
public class ManInfo {
    @Id
    @GeneratedValue
    private Integer id;
    private Integer age;
    private String nickname;

    public ManInfo() {
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public String getNickname() {
        return nickname;
    }

    public void setNickname(String nickname) {
        this.nickname = nickname;
    }
}

PS:@GeneratedValue注解的strategy属性提供四种值:
-AUTO主键由程序控制, 是默认选项 ,不设置就是这个
-IDENTITY 主键由数据库生成, 采用数据库自增长, Oracle不支持这种方式
-SEQUENCE 通过数据库的序列产生主键, MYSQL 不支持
-Table 提供特定的数据库产生主键, 该方式更有利于数据库的移植

@GeneratedValue(strategy=GenerationType.IDENINY)

然后创建一个ManInfoRepository接口文件,继承JpaRepository,泛型里填上实体类和id的类型,比如这里我填的是ManInfo和Integer

package com.alun;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
/**
 * Created by Administrator on 2017/5/29.
 */
public interface ManInfoRepository extends JpaRepository {

}

然后就可以使用了,这里我们对数据库里进行增删查改
创建ManInfoController,使用刚才创建的 ManInfoRepository进行操作,使用 ManInfoRepository
要用到 @Autowired注解, @Autowired可以对成员变量、方法和构造函数进行标注,来完成自动装配的工作

package com.alun;

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

import java.util.List;

/**
 * Created by Administrator on 2017/5/29.
 */
@RestController
public class ManInfoController {
    @Autowired
    ManInfoRepository manInfoRepository;

    /**
     * 查找所有人
     * @return
     */
    @GetMapping(value = "/getAllManInfo")
    List< ManInfo> getAllManInfo(){
        return manInfoRepository.findAll();
    }


    /**
     * 根据id找某一个人
     * @param id
     */
    @DeleteMapping(value = "/getManInfo")
    ManInfo getManInfo(@RequestParam("id") Integer id ){
       return manInfoRepository.findOne(id);
    }

    /**
     * 添加一个人
     * @param age
     * @param nickname
     * @return
     */
    @PostMapping(value = "/addMan")
    ManInfo addMan(@RequestParam("age") Integer age ,@RequestParam("nickname") String nickname ){

        ManInfo manInfo=new ManInfo();
        manInfo.setAge(age);
        manInfo.setNickname(nickname);
        return  manInfoRepository.save(manInfo);
    }

    /**
     * 根据ID修改一个人的信息
     * @param id
     * @param age
     * @param nickname
     * @return
     */
    @PutMapping(value = "/update")
    ManInfo updateManInfo(@RequestParam("id") Integer id , @RequestParam("age") Integer age ,@RequestParam("nickname") String nickname ){

        ManInfo manInfo=new ManInfo();
        manInfo.setId(id);
        manInfo.setAge(age);
        manInfo.setNickname(nickname);
        return  manInfoRepository.save(manInfo);
    }


    /**
     * 根据ID删除一个人的信息
     * @param id
     */
    @DeleteMapping(value = "/dlt")
    void dltManInfo(@RequestParam("id") Integer id ){
          manInfoRepository.delete(id);
    }

    /**
     * 根据年龄查询
     */
    @GetMapping(value = "getManInfoByAge")
        List  getManInfoByAge   (@RequestParam("age")  Integer age){

        return  manInfoRepository.findByAge(age);
    }
}

以上都是根据id进行增删查改,那么我要用其他参数的操作,比如年龄(age)怎么办呢?!
只需要改改ManInfoRepository 就可以了。

package com.alun;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
/**
 * Created by Administrator on 2017/5/29.
 */
public interface ManInfoRepository extends JpaRepository {


//扩展,根据年龄查询,这的方法名必须写成findByAge .
     List findByAge(Integer age);

}

在ManInfoController使用

 /**
     * 根据年龄查询
     */
    @GetMapping(value = "getManInfoByAge")
        List  getManInfoByAge   (@RequestParam("age")  Integer age){

        return  manInfoRepository.findByAge(age);
    }

最后我们来看看 JPA中一些常用的查询操作

//And --- 等价于 SQL 中的 and 关键字,比如 findByHeightAndSex(int height,char sex);  
 public List findByHeightAndSex(int height,char sex);  
  
// Or --- 等价于 SQL 中的 or 关键字,比如 findByHeightOrSex(int height,char sex);  
 public List findByHeightOrSex(int height,char sex);  
  
 //Between --- 等价于 SQL 中的 between 关键字,比如 findByHeightBetween(int min, int max);  
 public List findByHeightBetween(int min,int max);  
  
 //LessThan --- 等价于 SQL 中的 "<",比如 findByHeightLessThan(int max);  
 public List findByHeightLessThan(int max);  
  
 //GreaterThan --- 等价于 SQL 中的">",比如 findByHeightGreaterThan(int min);  
 public List findByHeightGreaterThan(int min);  
  
 //IsNull --- 等价于 SQL 中的 "is null",比如 findByNameIsNull();  
 public List findByNameIsNull();  
  
 //IsNotNull --- 等价于 SQL 中的 "is not null",比如 findByNameIsNotNull();  
 public List findByNameIsNotNull();  
  
 //NotNull --- 与 IsNotNull 等价;  
 public List findByNameNotNull();  
  
 //Like --- 等价于 SQL 中的 "like",比如 findByNameLike(String name);  
 public List findByNameLike(String name);  
  
 //NotLike --- 等价于 SQL 中的 "not like",比如 findByNameNotLike(String name);  
 public List findByNameNotLike(String name);  
  
 //OrderBy --- 等价于 SQL 中的 "order by",比如 findByNameNotNullOrderByHeightAsc();  
 public ListfindByNameNotNullOrderByHeightAsc();  
  
 //Not --- 等价于 SQL 中的 "! =",比如 findByNameNot(String name);  
 public List findByNameNot(String name);  
  
 //In --- 等价于 SQL 中的 "in",比如 findByNameIN(String name);  
 public List findByNameIn(String name);  
  
 //NotIn --- 等价于 SQL 中的 "not in",比如 findByNameNotIN(String name);  
 public List findByNameNotIn(String name);  

你可能感兴趣的:(Spring Boot 学习之路五,数据库二 ,JpaRepository)