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);
}