Spring data jpa实现CRUD的三种方式

原创 2015年11月18日 09:56:42

1. 继承JpaRepository

    JpaRepository继承PagingAndSortingRepository因此可以很好的实现分页和排序功能。

    

public interface JpaRepository<T, ID extends Serializable>
  extends CrudRepository<T, ID> {

  Iterable<T> findAll(Sort sort);

  Page<T> findAll(Pageable pageable);
}

2. 使用 jpql语句


public interface UserRepository extends JpaRepository<User, Long> {

  @Query("select u from User u where u.emailAddress = ?1")
  User findByEmailAddress(String emailAddress);
}


3. 使用实体处理器


package com.jike.usermanage.repository;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

import org.springframework.transaction.annotation.Transactional;

import com.jike.usermanage.model.Interest;
import com.jike.usermanage.model.User;

public class UserRepositoryImpl {

	@PersistenceContext
	private EntityManager entityManager;
	
	@Transactional
	public void add(User user) {
		entityManager.persist(user);

	}
	@Transactional
	public User update(User user) {
		User userUpdate = entityManager.find(User.class, user.getId());
		userUpdate.setName(user.getName());
		userUpdate.setPhone(user.getPhone());
		return userUpdate;
	}
	@Transactional
	public User addOrUpdate(User user) {
		
		return entityManager.merge(user);
	}
	@Transactional
	public void delete(User user) {
		entityManager.remove(user);

	}

	public User findOne(Integer id) {
		
		return entityManager.find(User.class, id);
	}
	@Transactional
	public List<User> findAll() {
		
		/*
		 * + , - , *, /
		 * 
		 * =, >, <, >=, <=, <>
		 * 
		 * between, like, in, is null, is empty, member of, not , and ,or
		 * 
		 * */

		String queryString = "select u from User u where :interest member of u.interests";
		Query query = entityManager.createQuery(queryString);
		Interest interest = new Interest();
		interest.setId(1L);
		query.setParameter("interest", interest);
		List list = query.getResultList();
		/*if (list!=null){
			List<User> userList = new ArrayList<User>();
			for(int i=0; i<list.size(); i++){
				
				Object[] o = (Object[]) list.get(i);
				User user = new User();
				user.setName(o[0].toString());
				user.setInCome(new BigDecimal(o[1].toString()));
				userList.add(user);
				
			}
			return userList;
			
		}else
			return null;*/
		return list;
		

		
	}
	
	@Transactional
	public List<Object> findObject(int uid) {
		
		/*
		 * 基本语法:select 实体属性  聚合函数(实体属性) from 实体 group by 实体属性 having 条件
		 * 
		 * avg(distinct...),sum(distinct...),count(distinct...),min,max
		 * 
		 * */
		
		
		String queryString = "select new com.jike.usermanage.model.User(u.id,u.name) from User u where u.id=:id";
		//Query query = entityManager.createQuery(queryString);
		Query query =entityManager.createNativeQuery("select id_,name_ from t_user where id_=1"); 
		query.setParameter("id", uid);
		List list = query.getResultList();
		return list;
		
		

		
	}	


}

相关文档参考:http://docs.spring.io/spring-data/jpa/docs/current/reference/html/





jpa入门之环境搭建和CRUD基本操作

还在为hibernate映射文件太多不好维护发愁吗?如果也不想写映射文件,那么试试JPA吧,一定会减轻很多开发负担的。不可错过的好文章哦。...
  • chenwill3
  • chenwill3
  • 2014年09月06日 20:50
  • 2411

JPA的CRUD操作,映射实体

1.初始化      EntityManagerFactory emf =  Persistence.createEntityManagerFactory("manager1"); 还有另一种方法...
  • a19880813
  • a19880813
  • 2013年08月15日 09:40
  • 911

基于JPA的CRUD例子

  • 2008年01月05日 17:08
  • 3.97MB
  • 下载

SpringJPA 源码中CrudRepository和JpaRepository的Save方法的区别分析

@Slf4j @Service public class AdviserCommSignedServiceImpl implements AdviserCommSignedService { ...
  • hikeboy
  • hikeboy
  • 2017年02月28日 14:58
  • 5021

spring data 接口之 CrudRepository

CrudRepository 接口继承于 Repository 接口,并新增了简单的增、删、查等方法
  • zgf19930504
  • zgf19930504
  • 2016年01月18日 15:49
  • 21576

Spring Data JPA详解

本文转自http://blog.csdn.net/anxpp/article/details/51415698, 感谢!     在一切开始之前,先举个简单的例子,以提高大家的兴致! ...
  • chrislyl
  • chrislyl
  • 2017年01月18日 11:20
  • 2814

spring data jpa使用详解

使用Spring data JPA开发已经有一段时间了,这期间学习了一些东西,也遇到了一些问题,在这里和大家分享一下。 前言: Spring data简介: Spring Data是一个用于简化数据库...
  • liuchuanhong1
  • liuchuanhong1
  • 2016年07月27日 09:45
  • 19818

Spring-Data-Jpa Crud示例

前言之前在上一次只是简单讲了一下Spring中如何使用Spring-Data-Jpa来将Spring与Jpa融合,配置文件的设置和参数说明.这次根据一个具体的增删改查的例子来演示一下.话不多说,上代码...
  • Kiss_The_sky
  • Kiss_The_sky
  • 2017年07月08日 14:40
  • 214

SpringBoot+SpringData实现SpringMVC简单项目

最近一段时间在学习《Spring in action》这本书。 为什么要使用Spring?因为可以减少Java开发的复杂性。 为什么要使用Spring Boot?为了简化Spring应用的搭建和开发过...
  • mrtif
  • mrtif
  • 2016年08月25日 16:25
  • 424

一步步实现:JPA的基本增删改查CRUD(jpa基于hibernate)

一步步:实现JPA的基本增删改查CRUD(jpa基于hibernate)
  • baidu_37107022
  • baidu_37107022
  • 2017年08月02日 10:45
  • 1393
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Spring data jpa实现CRUD的三种方式
举报原因:
原因补充:

(最多只允许输入30个字)