上篇我们介绍了Repository接口,发现该接口并没有提供完成的DML操作,SpringDataJPA中完成的CRUD操作是通过CrudRepository接口来实现的。
CrudRepository接口
CrudRepository接口继承自Repository接口,所以Repository接口具有的功能CrudRepository接口都具有,同时又扩展了CRUD相关的功能
API方法介绍
CrudRepository接口提供了如下的方法:
@NoRepositoryBean public interface CrudRepository<T, ID extends Serializable> extends Repository<T, ID> { <S extends T> S save(S entity); <S extends T> Iterable<S> save(Iterable<S> entities); T findOne(ID id); boolean exists(ID id); Iterable<T> findAll(); Iterable<T> findAll(Iterable<ID> ids); long count(); void delete(ID id); void delete(T entity); void delete(Iterable<? extends T> entities); void deleteAll(); }
去掉了相关的注释,通过方法名称我们也能很清楚的知道每个方法的功能。
具体使用
1.声明Dao接口
/** * CrudRepository 接口使用 * 定义的方法名称 参考文档定义 */ public interface UserDao extends CrudRepository<Users,Integer> { }
2.单元测试
/** * @program: spring-data-jpa * @description: 单元测试 * @author: 波波烤鸭 * @create: 2019-05-18 09:48 */ @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration("classpath:applicationContext.xml") public class TestDemo { @Autowired private UserDao usersDao; /** * 添加单条数据 */ @Test public void test1(){ Users user = new Users(); user.setUserage(21); user.setUsername("赵小丽"); this.usersDao.save(user); } /** * 批量添加数据 */ @Test public void test2(){ Users user = new Users(); user.setUserage(21); user.setUsername("赵小丽"); Users user1 = new Users(); user1.setUserage(25); user1.setUsername("王小虎"); List<Users> list= new ArrayList<>(); list.add(user); list.add(user1); this.usersDao.save(list); } /** * 根据 ID 查询单条数据 */ @Test public void test3(){ Users users = this.usersDao.findOne(13); System.out.println(users); } /** * 查询全部数据 */ @Test public void test4(){ List<Users> list = (List<Users>)this.usersDao.findAll(); for (Users users : list) { System.out.println(users); } } /** * 删除数据 */ @Test public void test5(){ this.usersDao.delete(13); } /** * 更新数据 方式一 */ @Test public void test6(){ Users user = this.usersDao.findOne(12); user.setUsername("王小红"); this.usersDao.save(user); } /** * 更新数据 方式二 */ @Test @Transactional @Rollback(false) public void test7(){ Users user = this.usersDao.findOne(12);//持久化状态的 user.setUsername("王小小"); } }