package com.cedric.dao;import com.cedric.domain.Customer;import org.springframework.data.jpa.repository.JpaRepository;import org.springframework.data.jpa.repository.JpaSpecificationExecutor;/** * 符合SpringData的dao层的接口规范 * JpaRepository<操作的实体类型,实体类中主键的类型> * * 封装了基本CRUD操作 * JpaSpecificationExecutor<操作的实体类型> * * 封装了复杂查询(分页) */public interface CustomerDao extends JpaRepository<Customer,Long>, JpaSpecificationExecutor<Customer> {}
package com.cedric.test;import com.cedric.dao.CustomerDao;import com.cedric.domain.Customer;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.test.context.ContextConfiguration;import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;import java.util.List;@RunWith(SpringJUnit4ClassRunner.class) //声明spring提供的单元测试@ContextConfiguration(locations = "classpath:applicationContext.xml") //指定spring容器的配置信息public class CustomerDaoTest { @Autowired private CustomerDao customerDao; /** * 根据id查询 */ @Test public void testFindOne(){ Customer customer = customerDao.findOne(3l); System.out.println(customer); } /** * save:保存或更新 * 根据传递的对象是否存在主键id, * 如果没有id主键属性:保存 * 存在id主键属性,根据id查询数据,更新数据 */ @Test public void testSave(){ Customer customer = new Customer(); customer.setCustName("农夫山泉"); customer.setCustLevel("Vip"); customer.setCustIndustry("营销"); customerDao.save(customer); } @Test public void testUpdate(){ Customer customer = new Customer(); customer.setCustId(4l); customer.setCustName("农夫山泉有点甜"); customerDao.save(customer); } @Test public void testDelete(){ customerDao.delete(5l); } /** * 查询所有 */ @Test public void testFindAll(){ List<Customer> list = customerDao.findAll(); for (Customer customer : list){ System.out.println(customer); } }}