需要导入的包:
<!-- 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;
}
}