springboot+JPARepository实现增删改查

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

  1.  
    package com.alun;
  2.  
     
  3.  
    import javax.persistence.Entity;
  4.  
    import javax.persistence.GeneratedValue;
  5.  
    import javax.persistence.Id;
  6.  
     
  7.  
    /**
  8.  
    * Created by Administrator on 2017/5/29.
  9.  
    */
  10.  
    @Entity
  11.  
    public class ManInfo {
  12.  
    @Id
  13.  
    @GeneratedValue
  14.  
    private Integer id;
  15.  
    private Integer age;
  16.  
    private String nickname;
  17.  
     
  18.  
    public ManInfo() {
  19.  
    }
  20.  
     
  21.  
    public Integer getId() {
  22.  
    return id;
  23.  
    }
  24.  
     
  25.  
    public void setId(Integer id) {
  26.  
    this.id = id;
  27.  
    }
  28.  
     
  29.  
    public Integer getAge() {
  30.  
    return age;
  31.  
    }
  32.  
     
  33.  
    public void setAge(Integer age) {
  34.  
    this.age = age;
  35.  
    }
  36.  
     
  37.  
    public String getNickname() {
  38.  
    return nickname;
  39.  
    }
  40.  
     
  41.  
    public void setNickname(String nickname) {
  42.  
    this.nickname = nickname;
  43.  
    }
  44.  
    }

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

@GeneratedValue(strategy=GenerationType.IDENINY)

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

  1.  
    package com.alun;
  2.  
    import org.springframework.data.jpa.repository.JpaRepository;
  3.  
    import java.util.List;
  4.  
    /**
  5.  
    * Created by Administrator on 2017/5/29.
  6.  
    */
  7.  
    public interface ManInfoRepository extends JpaRepository<ManInfo,Integer> {
  8.  
     
  9.  
    }

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

  1.  
    package com.alun;
  2.  
     
  3.  
    import org.springframework.beans.factory.annotation.Autowired;
  4.  
    import org.springframework.web.bind.annotation.*;
  5.  
     
  6.  
    import java.util.List;
  7.  
     
  8.  
    /**
  9.  
    * Created by Administrator on 2017/5/29.
  10.  
    */
  11.  
    @RestController
  12.  
    public class ManInfoController {
  13.  
    @Autowired
  14.  
    ManInfoRepository manInfoRepository;
  15.  
     
  16.  
    /**
  17.  
    * 查找所有人
  18.  
    * @return
  19.  
    */
  20.  
    @GetMapping(value = "/getAllManInfo")
  21.  
    List< ManInfo> getAllManInfo(){
  22.  
    return manInfoRepository.findAll();
  23.  
    }
  24.  
     
  25.  
     
  26.  
    /**
  27.  
    * 根据id找某一个人
  28.  
    * @param id
  29.  
    */
  30.  
    @DeleteMapping(value = "/getManInfo")
  31.  
    ManInfo getManInfo(@RequestParam("id") Integer id ){
  32.  
    return manInfoRepository.findOne(id);
  33.  
    }
  34.  
     
  35.  
    /**
  36.  
    * 添加一个人
  37.  
    * @param age
  38.  
    * @param nickname
  39.  
    * @return
  40.  
    */
  41.  
    @PostMapping(value = "/addMan")
  42.  
    ManInfo addMan(@RequestParam("age") Integer age ,@RequestParam("nickname") String nickname ){
  43.  
     
  44.  
    ManInfo manInfo=new ManInfo();
  45.  
    manInfo.setAge(age);
  46.  
    manInfo.setNickname(nickname);
  47.  
    return manInfoRepository.save(manInfo);
  48.  
    }
  49.  
     
  50.  
    /**
  51.  
    * 根据ID修改一个人的信息
  52.  
    * @param id
  53.  
    * @param age
  54.  
    * @param nickname
  55.  
    * @return
  56.  
    */
  57.  
    @PutMapping(value = "/update")
  58.  
    ManInfo updateManInfo(@RequestParam("id") Integer id , @RequestParam("age") Integer age ,@RequestParam("nickname") String nickname ){
  59.  
     
  60.  
    ManInfo manInfo=new ManInfo();
  61.  
    manInfo.setId(id);
  62.  
    manInfo.setAge(age);
  63.  
    manInfo.setNickname(nickname);
  64.  
    return manInfoRepository.save(manInfo);
  65.  
    }
  66.  
     
  67.  
     
  68.  
    /**
  69.  
    * 根据ID删除一个人的信息
  70.  
    * @param id
  71.  
    */
  72.  
    @DeleteMapping(value = "/dlt")
  73.  
    void dltManInfo(@RequestParam("id") Integer id ){
  74.  
    manInfoRepository.delete(id);
  75.  
    }
  76.  
     
  77.  
    /**
  78.  
    * 根据年龄查询
  79.  
    */
  80.  
    @GetMapping(value = "getManInfoByAge")
  81.  
    List<ManInfo> getManInfoByAge (@RequestParam("age") Integer age){
  82.  
     
  83.  
    return manInfoRepository.findByAge(age);
  84.  
    }
  85.  
    }
  86.  
     

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

  1.  
    package com.alun;
  2.  
    import org.springframework.data.jpa.repository.JpaRepository;
  3.  
    import java.util.List;
  4.  
    /**
  5.  
    * Created by Administrator on 2017/5/29.
  6.  
    */
  7.  
    public interface ManInfoRepository extends JpaRepository<ManInfo,Integer> {
  8.  
     
  9.  
     
  10.  
    //扩展,根据年龄查询,这的方法名必须写成findByAge .
  11.  
    List<ManInfo> findByAge(Integer age);
  12.  
     
  13.  
    }
  14.  
     

在ManInfoController使用

  1.  
    /**
  2.  
    * 根据年龄查询
  3.  
    */
  4.  
    @GetMapping(value = "getManInfoByAge")
  5.  
    List<ManInfo> getManInfoByAge (@RequestParam("age") Integer age){
  6.  
     
  7.  
    return manInfoRepository.findByAge(age);
  8.  
    }

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

  1.  
    //And --- 等价于 SQL 中的 and 关键字,比如 findByHeightAndSex(int height,char sex);
  2.  
    public List<User> findByHeightAndSex(int height,char sex);
  3.  
     
  4.  
    // Or --- 等价于 SQL 中的 or 关键字,比如 findByHeightOrSex(int height,char sex);
  5.  
    public List<User> findByHeightOrSex(int height,char sex);
  6.  
     
  7.  
    //Between --- 等价于 SQL 中的 between 关键字,比如 findByHeightBetween(int min, int max);
  8.  
    public List<User> findByHeightBetween(int min,int max);
  9.  
     
  10.  
    //LessThan --- 等价于 SQL 中的 "<",比如 findByHeightLessThan(int max);
  11.  
    public List<User> findByHeightLessThan(int max);
  12.  
     
  13.  
    //GreaterThan --- 等价于 SQL 中的">",比如 findByHeightGreaterThan(int min);
  14.  
    public List<User> findByHeightGreaterThan(int min);
  15.  
     
  16.  
    //IsNull --- 等价于 SQL 中的 "is null",比如 findByNameIsNull();
  17.  
    public List<User> findByNameIsNull();
  18.  
     
  19.  
    //IsNotNull --- 等价于 SQL 中的 "is not null",比如 findByNameIsNotNull();
  20.  
    public List<User> findByNameIsNotNull();
  21.  
     
  22.  
    //NotNull --- 与 IsNotNull 等价;
  23.  
    public List<User> findByNameNotNull();
  24.  
     
  25.  
    //Like --- 等价于 SQL 中的 "like",比如 findByNameLike(String name);
  26.  
    public List<User> findByNameLike(String name);
  27.  
     
  28.  
    //NotLike --- 等价于 SQL 中的 "not like",比如 findByNameNotLike(String name);
  29.  
    public List<User> findByNameNotLike(String name);
  30.  
     
  31.  
    //OrderBy --- 等价于 SQL 中的 "order by",比如 findByNameNotNullOrderByHeightAsc();
  32.  
    public List<User>findByNameNotNullOrderByHeightAsc();
  33.  
     
  34.  
    //Not --- 等价于 SQL 中的 "! =",比如 findByNameNot(String name);
  35.  
    public List<User> findByNameNot(String name);
  36.  
     
  37.  
    //In --- 等价于 SQL 中的 "in",比如 findByNameIN(String name);
  38.  
    public List<User> findByNameIn(String name);
  39.  
     
  40.  
    //NotIn --- 等价于 SQL 中的 "not in",比如 findByNameNotIN(String name);
  41.  
    public List<User> findByNameNotIn(String name);
  42.  

https://blog.csdn.net/chehec2010/article/details/84995827 

posted @ 2021-04-01 11:17  星云惊蛰  阅读(525)  评论(0)    收藏  举报