spring boot关于jPA方式数据查询

需要导入的包:

<!-- jpa依赖 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <!-- mysql驱动 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>

application.yml文件配置mysqll配置信息

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/test
    username: root
    password: root
    driver-class-name: com.mysql.jdbc.Driver

实例代码:

实体(entity):

package com.yst.sp.model;

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

@Entity
public class Person {

    @Id
    private Integer id;
    
    private String name;
    
    private Integer age;

    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;
    }
    
    
}
#########################################################

DAO:

package com.yst.sp.dao;

import java.util.List;

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

import com.yst.sp.model.Person;

public interface PersonDao extends JpaRepository<Person, Integer>{

    /**
     * jpa通用模式
     * 关键字                         例子                                                      对应SQL
     * And              findByLastnameAndFirstname         where x.lastname = ?1 and x.firstname = ?2
     * 
     * Or                  findByLastnameOrFirstname          where x.lastname = ?1 or x.firstname = ?2
     * 
     * is,Equals           findByFirstname
     *                     findByFirstnameIs                  where x.firstname = ?1
     *                     findByFirstnameEquals
     *             
     *Between              findByStartDateBetween             where x.startDate between ?1 and ?2
     *
     *LessThan             findByAgeLessThan                   where x.age < ?1
     *
     *LessThanEqual     findByAgeLessThanEqual             where x.age <= ?1
     *
     *GreaterThan       findByAgeGreaterThan               where x.age > ?1
     *
     *GreaterThanEqual  findByAgeGreaterThanEqual          where x.age >= ?1
     *
     *After             findByStartDateAfter               where x.startDate > ?1
     *
     *Before            findByStartDateBefore              where x.startDate < ?1
     *
     *IsNull            findByAgeIsNull                    where x.age is null
     *
     *IsNotNull,NotNull findAge(Is)NotNull                 where x.age not null
     *
     *Like              findByFirstnameLike                where x.firstname like ?1
     *
     *NotLike           findByFirstnameNotLike             where x.firstname not like ?1
     *             
     * 
     * @param name
     * @return
     */
    List<Person> findByname(String name);
    
    /**
     * 根据实体对象
     * @param name
     * @return
     */
    @Query("select p from Person p where name = ?1")

    //@Query("select p from Person p where name =:name")
    Person findByName1(String name);
    
    /**
     * 本地SQL(根据数据库表查询)
     * @param name
     * @return
     */
    @Query(value = "select * from person where name = ?1",nativeQuery=true)

    //@Query(value = "select * from person where name =:name",nativeQuery=true)
    List<Person> findNameByNative(String name);
}

############################################################

Controller:

package com.yst.sp.controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.yst.sp.model.Person;
import com.yst.sp.service.PersonService;

@RestController
public class JpaController {

    @Autowired
    private PersonService personService;
    
    @RequestMapping(value="byname/{name}",produces=MediaType.APPLICATION_JSON_UTF8_VALUE)
    public List<Person> findByName(@PathVariable("name") String name) {
        List<Person> persons = personService.findByName(name);
        return persons;
    }
    
    @RequestMapping(value="byname1/{name}",produces=MediaType.APPLICATION_JSON_UTF8_VALUE)
    public Person findByName1(@PathVariable("name") String name) {
        Person person = personService.findByName1(name);
        return person;
    }
    
    @RequestMapping(value="bynative/{name}",produces=MediaType.APPLICATION_JSON_UTF8_VALUE)
    public List<Person> bynative(@PathVariable("name") String name) {
        List<Person> persons = personService.findNameByNative(name);
        return persons;
    }
}
 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值