Spring data jpa實現CRUD的三種方式

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/





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章