package com.wisely;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort;
import org.springframework.data.domain.Sort.Direction;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.wisely.dao.PersonRepository;
import com.wisely.domain.Person;
import com.wisely.support02.CustomRepositoryFactoryBean;
import com.wisely.util.UUIDUtils;
/**
* spring Data JPA
*
*/
@RestController
@SpringBootApplication
/**
* 在配置类上配置@EnableJpaRepositories并指定repositoryFactoryBeanClass,让自定义的Repository起效
* 如果不需要自定义Repository实现,则在Spring Data JPA无需添加@EnableJpaRepositories,因为@SpringBootApplication
* 包含的@EnableAutoConfiguration注解已经开启了对Spring Data JPA的支持
*/
@EnableJpaRepositories(repositoryFactoryBeanClass = CustomRepositoryFactoryBean.class)
public class Ch823Application {
@Autowired
PersonRepository personRepository;
public static void main(String[] args) {
SpringApplication.run(Ch823Application.class, args);
}
/**
* 通过名字相等查询
* @param address
* @return
*/
@RequestMapping("/findByName")
public List<Person> findByName(String name) {
List<Person> people = personRepository.findByName(name);
return people;
}
/**
* 通过名字like查询,两边不加%
* @param name
* @return
*/
@RequestMapping("/findByNameLike")
public List<Person> findByNameLike(String name) {
List<Person> people = personRepository.findByNameLike(name);
return people;
}
/**
* 通过名字like查询,两边加%
* @param name
* @return
*/
@RequestMapping("/findByNameContaining")
public List<Person> findByNameContaining(String name) {
List<Person> people = personRepository.findByNameContaining(name);
return people;
}
/**
* 获得符合查询条件的前10条数据
* @param name
* @return
*/
@RequestMapping("/findFirst10ByName")
public List<Person> findFirst10ByName(String name) {
List<Person> people = personRepository.findFirst10ByName(name);
return people;
}
/**
* 更新地址
* @param address
* @return
*/
@RequestMapping("/updateAddress")
public int updateAddress(String address) {
return personRepository.updateAddress(address);
}
/**
* 排序
* @param address
* @return
*/
@RequestMapping("/findByAddressSort")
public List<Person> findByAddressSort(String address) {
List<Person> people = personRepository.findByAddress(address, new Sort(Direction.ASC, "age"));
return people;
}
/**
* 分页
* @param address
* @return
*/
@RequestMapping("/findByAddressPage")
public Page<Person> findByAddressPage(String address) {
Page<Person> people = personRepository.findByAddress(address, new PageRequest(0, 10));
return people;
}
/**************************************实战**********************************************/
/**
* 保存
* @param name
* @param age
* @param address
* @return
*/
@RequestMapping("/save")
public Person save(String name, Integer age, String address) {
Person p = personRepository.save(new Person(UUIDUtils.getUUIDLong(), name, age, address));
return p;
}
/**
* 测试findByAddress
*/
@RequestMapping("/q1")
public List<Person> q1(String address){
List<Person> people = personRepository.findByAddress(address);
return people;
}
/**
* 测试findByNameAndAddress
*/
@RequestMapping("/q2")
public Person q2(String name,String address){
Person people = personRepository.findByNameAndAddress(name, address);
return people;
}
/**
* 测试withNameAndAddressQuery
*/
@RequestMapping("/q3")
public Person q3(String name,String address){
Person p = personRepository.withNameAndAddressQuery(name, address);
return p;
}
/**
* 测试withNameAndAddressNamedQuery
*/
@RequestMapping("/q4")
public Person q4(String name,String address){
Person p = personRepository.withNameAndAddressNamedQuery(name, address);
return p;
}
/**
* 测试排序
*/
@RequestMapping("/sort")
public List<Person> sort(){
List<Person> people = personRepository.findAll(new Sort(Direction.ASC,"age"));
return people;
}
/**
* 测试分页
*/
@RequestMapping("/page")
public Page<Person> page(){
Page<Person> pagePeople = personRepository.findAll(new PageRequest(1, 2));
return pagePeople;
}
/**************************************实战**********************************************/
//support01
// @RequestMapping("/home")
// public List<Object[]> home() {
// String sql = "select * from person where id = '9'";
// return personRepository.listBySQL(sql);
// }
//support02
/**
* 控制器中接受一个person对象,当person的name有值时,会自动对name进行like查询;
* 当age有值时,会进行等于查询;
* 当person中有多个值不为空的时候,会自动构造多个查询条件;
* 当person所有值为空的时候,默认查询出所有记录
*
* 需要特别指出的是,在实体类中定义的数据类型要用包装类型(Long,Integer)
* 而不能使用原始数据类型(long,int)
* 应为在Spring MVC中,使用原始数据类型会自动初始化为0,而不是空,导致我们构造条件失败
* @param person
* @return
*/
@RequestMapping("/home")
public Page<Person> home(Person person) {
Page<Person> pagePeople = personRepository.findByAuto(person,new PageRequest(0, 10));
return pagePeople;
}
//support02
// @RequestMapping("/findAll")
// public List<Person> findAll() {
// List<Person> people = personRepository.findAll(CustomeSpecs.personFromHangZhou());
// return people;
// }
//support03
// @RequestMapping("/home")
// public String home() {
// System.out.println("hello");
//
// String hql = "select e from Person e";
// Page<Person> page = new Page<Person>();
// Page<Person> findPage = personRepository.findPage(page, hql, null);
// for(Person person : findPage.getResult()) {
// System.out.println(person.getName());
// }
//
// return "hello";
// }
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
SpringDataJpa.rar (56个子文件)
ch8_2_3
.project 1KB
mvnw.cmd 6KB
HELP.md 436B
mvnw 9KB
src
test
java
com
wisely
Ch823ApplicationTests.java 326B
main
resources
application.properties 1KB
templates
static
java
com
wisely
Ch823Application.java 6KB
domain
Person.java 2KB
dao
PersonRepository.java 2KB
util
UUIDUtils.java 303B
entity
Page.java 2KB
support02
CustomeSpecs.java 4KB
CustomRepository.java 773B
CustomRepositoryFactoryBean.java 2KB
CustomRepositoryImpl.java 1KB
support01
CustomRepository.java 524B
CustomRepositoryFactoryBean.java 2KB
CustomRepositoryImpl.java 843B
support03
CustomRepository.java 720B
CustomRepositoryFactoryBean.java 2KB
CustomRepositoryImpl.java 2KB
target
classes
application.properties 1KB
com
wisely
domain
Person.class 2KB
Ch823Application.class 6KB
dao
PersonRepository.class 2KB
util
UUIDUtils.class 817B
entity
Page.class 3KB
support02
CustomRepository.class 868B
CustomRepositoryImpl.class 2KB
CustomeSpecs.class 2KB
CustomRepositoryFactoryBean$CustomRepositoryFactory.class 3KB
CustomeSpecs$2.class 5KB
CustomRepositoryFactoryBean.class 1KB
CustomeSpecs$1.class 2KB
support01
CustomRepository.class 608B
CustomRepositoryImpl.class 2KB
CustomRepositoryFactoryBean$BaseRepositoryFactory.class 3KB
CustomRepositoryFactoryBean.class 1KB
support03
CustomRepository.class 722B
CustomRepositoryImpl.class 3KB
CustomRepositoryFactoryBean$CustomRepositoryFactory.class 3KB
CustomRepositoryFactoryBean.class 1KB
META-INF
MANIFEST.MF 315B
maven
com.wisely
ch8_2_3
pom.properties 242B
pom.xml 2KB
test-classes
com
wisely
Ch823ApplicationTests.class 613B
.settings
org.eclipse.wst.common.project.facet.core.xml 145B
org.eclipse.m2e.core.prefs 97B
org.eclipse.jdt.core.prefs 356B
org.eclipse.core.resources.prefs 214B
.mvn
wrapper
MavenWrapperDownloader.java 5KB
maven-wrapper.jar 47KB
maven-wrapper.properties 116B
pom.xml 2KB
.classpath 1KB
.gitignore 277B
共 56 条
- 1
资源评论
tjsahwj
- 粉丝: 9
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功