Spring Boot之JpaRepository

结构.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<ManInfo,Integer> {

}

然后就可以使用了,这里我们对数据库里进行增删查改
创建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<ManInfo>  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<ManInfo,Integer> {


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

}

在ManInfoController使用

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

        return  manInfoRepository.findByAge(age);
    }

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

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

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot 提供了对 JPA(Java Persistence API)的自动配置和支持,使得在 Spring Boot 应用中使用 JPA 更加简单。下面是整合 JPA 的步骤: 1. 添加依赖:在 pom.xml 文件中添加 Spring BootJPA 的依赖,如下所示: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> ``` 2. 配置数据源:在 application.properties 或 application.yml 文件中配置数据源信息,如下所示: ```yaml spring.datasource.url=jdbc:mysql://localhost:3306/mydb spring.datasource.username=root spring.datasource.password=password123 spring.datasource.driver-class-name=com.mysql.jdbc.Driver ``` 3. 定义实体类:定义与数据库表对应的实体类,使用 JPA 注解来映射表和字段,如下所示: ```java @Entity @Table(name = "users") public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; private Integer age; // 省略 getter/setter 方法 } ``` 4. 定义 Repository:定义继承自 JpaRepositoryRepository 接口,如下所示: ```java @Repository public interface UserRepository extends JpaRepository<User, Long> { List<User> findByName(String name); } ``` 5. 使用 Repository:在服务层或控制器中使用 UserRepository,如下所示: ```java @Service public class UserService { @Autowired private UserRepository userRepository; public List<User> findUsersByName(String name) { return userRepository.findByName(name); } } ``` 通过以上步骤,即可完成 Spring BootJPA 的整合,可以通过 UserRepository 来访问数据库,并执行 CRUD 操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值