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吧,一定会减轻很多开发负担的。不可错过的好文章哦。...

JPA的CRUD操作,映射实体

1.初始化      EntityManagerFactory emf =  Persistence.createEntityManagerFactory("manager1"); 还有另一种方法...

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

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

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

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

一步一步学SpringDataJpa——JpaRepository基本功能(Curd)

1.UserService /** * * Copyright: Copyright (c) 2012 Asiainfo-Linkage * * service@date:2014-3-25...

JPA 接口 小解Repository

Spring Data是SpringSource基金会下的一个用于简化数据库访问,并支持云服务的开源框架。其主要目标是使得数据库的访问变得方便快捷,并支持map-reduce框架和云计算数据服务。对于...

学习 Repository 接口的第 1 个子接口 CRUDRepository

CRUDRepository 的使用很简单,原来我们继承 Repository ,现在我们继承 CRUDRepository ,就可以使用 CRUDRepository 固定的一些方法,我们不用写 S...

spring data 接口之 CrudRepository

CrudRepository 接口继承于 Repository 接口,并新增了简单的增、删、查等方法

SpringBoot第四讲扩展和封装Spring Data JPA(一)_自定义Repository和创建自己的BaseRepository

这一讲主要介绍spring Data JPA的封装。和设计相关的东西都是仁者见仁,智者见智的事情,如果你有更好的封装方案可以和我交流,互相学习。这一讲会讲如下一些内容  - 扩展Spring Dat...

Spring ORM+Hibernate?Out!换 Spring Data JPA 吧!

Spring Data JPA 的目标是通过让一些必须的工作变得更简单,来极大的提高数据访问层的实现效率。通常我们只需要姐访问方法,而 Spring 给你提供自动实现。! 在一切开始之前,先举个简单的...
  • anxpp
  • anxpp
  • 2016年05月15日 06:56
  • 33589
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Spring data jpa实现CRUD的三种方式
举报原因:
原因补充:

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