一 查询(注解)
@Query查询(常用)
@Query("select u from TestUser u where u.username=:username and u.sex=:sex") public List<TestUser> findByUsernameAndSex(@Param("username") String username, @Param("sex") String sex);
注意:TestUser 为实体类名;用=:时取参数要在参数加@Param("属性值")+类型 属性;
@Query查询(本地化查询)(常用)@Query(nativeQuery =true,value="select * from test_user tu where tu.user_name=:username ") public List<TestUser> findUserByNativeQuery(@Param("username")String username);注意:本地化查询要设nativeQuery=true分页查询
public Page<TestUser> findAll(final String username,final String sex, int p,int s){ PageRequest pr=new PageRequest(p,s); return testUserDao.findAll(new Specification() { @Override public Predicate toPredicate(Root root, CriteriaQuery criteriaQuery, CriteriaBuilder criteriaBuilder) { Predicate predicate=criteriaBuilder.conjunction(); List<javax.persistence.criteria.Expression<Boolean>> expressions=predicate.getExpressions(); if(username!=null&&!"".equals(username.trim())){ expressions.add(criteriaBuilder.like(root.get("username"),"%"+username+"%")); } if (sex!=null&&!"".equals(sex)){ expressions.add(criteriaBuilder.equal(root.get("sex"),sex)); } return predicate; } },pr); }
删除@Modifying @Query("delete from TestUser u where u.id=:id") public void delTestUserById(@Param("id") Long id);
注意:删除或修改时@Query上方要加入@Modifying 在Service 层要加上@Transactional(readOnly=false)更新
@Modifying @Query("update TestUser u set u.username where u.id=:id") public void delTestUserById(@Param("id") Long id);u.username