天天看點

十一 自定義Repository接口

1 自定義Repository接口(UserRepository)

package com.bjsxt.dao;

import com.bjsxt.pojo.Users;

public interface UserRepository {
	
	Users findById(Long id);

}
           

2 修改UserDaoJpaSpecifictionExecutor接口,讓其繼承UserRepository接口

package com.bjsxt.dao;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;

import com.bjsxt.pojo.Users;

/**
 * JpaSpecificationExecutor<Users>:不能單獨使用,需要配合jpa中的其他接口一起使用
 * @author guozi
 *
 */
public interface UserDaoJpaSpecifictionExecutor extends JpaRepository<Users, Long>, JpaSpecificationExecutor<Users>, UserRepository{

}
           

3 編寫UserDaoJpaSpecifictionExecutor接口的實作類,命名規則接口名+impl

package com.bjsxt.dao;

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

import com.bjsxt.pojo.Users;

public class UsersDaoJpaSpecificationExecutorImpl implements UserRepository {
	
	@PersistenceContext(name="entityManagerFactory")
	private EntityManager em;

	@Override
	public Users findById(Long id) {
		return em.find(Users.class, id);
	}

}
           

注意:EntityManager在applicationContext.xml有配置,可參照前面相應章節。

4 編寫測試方法

/**
	 * 自定義repository測試
	 * 	Hibernate: select users0_.id as id1_0_, users0_.age as age2_0_, users0_.user_name as user_nam3_0_ from ts_users users0_ where users0_.id=?
		Users(id=10, userName=娜美, age=18)
	 */
	@Test
	public void test7() {
		Users users = this.userDaoJpaSpecifictionExecutor.findById(10l);
		System.out.println(users);
	}
           

繼續閱讀