应项目经理的要求,使用springboot建立MVC框架,集成JPA。
建立maven工程,跳过骨架选择。
遇到的第一个坑,
Failure to transfer org.apache.maven.plugins:maven-resources-plugin:pom:2.6 from http://maven.aliyun.com/nexus/content/groups/public/ was cached in the local repository, resolution will not be reattempted until the update interval of alimaven has elapsed or updates are forced. Original error: Could not transfer artifact org.apache.maven.plugins:maven-resources-plugin:pom:2.6 from/to alimaven (http://maven.aliyun.com/nexus/content/groups/public/): The operation was cancelled.
解决办法:关闭eclipse;
删除本地的库文件。
打开eclipse,update Project 选中 Force update of SnapShots/Releases.
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import java.util.List;
/**
* Created by 邹运可 2018/04/13.
*/
public interface PersonRepository extends JpaRepository<Person, Long> {
List<Person> findByAddress(String name);
Person findByNameAndAddress(String name, String address);
@Query("select p from Person p where p.name=:name and p.address=:address")
Person withNameAndAddressQuery(@Param("name") String name, @Param("address") String address);
Person withNameAndAddressNamedQuery(String name, String address);
}
错误解决。
pom文件
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.1.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--jpa 相关jar包 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<!-- MySql 相关JAR包 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
</dependencies>
实体类
package com.app;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.NamedQuery;
/**
*Created by 邹运可 on 2018年4月13日.
*/
@Entity
@NamedQuery(name = "Person.withNameAndAddressNamedQuery",
query = "select p from Person p where p.name=?1 and p.address=?2")
public class Person {
@Id
@GeneratedValue
private Long id;
private String name;
private Integer age;
private String address;
public Person() {
}
public Person(Long id, String name, Integer age, String address) {
this.id = id;
this.name = name;
this.age = age;
this.address = address;
}
public Long getId() {
return id;
}
public void setId(Long 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;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
接口类
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import java.util.List;
/**
* Created by 邹运可 2018/04/13.
*/
public interface PersonRepository extends JpaRepository<Person, Long> {
List<Person> findByAddress(String name);
Person findByNameAndAddress(String name, String address);
@Query("select p from Person p where p.name=:name and p.address=:address")
Person withNameAndAddressQuery(@Param("name") String name, @Param("address") String address);
Person withNameAndAddressNamedQuery(String name, String address);
}
Controller
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* Created by 邹运可 on 2018年4月13日.
*/
@RestController
public class DataController {
@Autowired
PersonRepository personRepository;
@RequestMapping("/save")
public Person save(String name,String address,Integer age) {
Person person = personRepository.save(new Person(null, name, age, address));
return person;
}
@RequestMapping("/q1")
public List<Person> q1(String address) {
List<Person> people = personRepository.findByAddress(address);
return people;
}
@RequestMapping("/q2")
public Person q2(String name, String address) {
Person people = personRepository.findByNameAndAddress(name, address);
return people;
}
@RequestMapping("/q3")
public Person q3(String name, String address) {
Person person = personRepository.withNameAndAddressQuery(name, address);
return person;
}
@RequestMapping("/q4")
public Person q4(String name, String address) {
Person person = personRepository.withNameAndAddressNamedQuery(name, address);
return person;
}
@RequestMapping("/sort")
public List<Person> sort() {
List<Person> people = personRepository.findAll(new Sort(Sort.Direction.ASC, "age"));
return people;
}
@RequestMapping("/page")
public Page<Person> page(int page,int size){
Page<Person> all = personRepository.findAll(new PageRequest(page, size));
return all;
}
@RequestMapping("/all")
public List<Person> all(){
return personRepository.findAll();
}
@RequestMapping("/nihao")
public String getLinux(){
return "wohao";
}
}
启动的APP
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
*
* Created by 邹运可 on 2018年4月13日.
*
*/
@SpringBootApplication
public class RunApp {
public static void main(String[] args) {
SpringApplication.run(RunApp.class, args);
}
}
至此,Springboot集成JPA结束