Spring技术内幕之Spring Data JPA-查询方式

来源:互联网 发布:软件生成周期模型 编辑:程序博客网 时间:2024/06/07 18:57
import java.util.List;import java.util.concurrent.Future;import org.springframework.data.jpa.repository.Modifying;import org.springframework.data.jpa.repository.Query;import org.springframework.data.repository.CrudRepository;import org.springframework.data.repository.query.Param;import org.springframework.scheduling.annotation.Async;import org.springframework.transaction.annotation.Transactional;import com.my.domain.User;/** * 用户DAO 不需要添加@Repository注解 * Spring会自动为我们继承CrudRepository接口的接口创建实现类 * @author WANBGBOWE * */public interface UserRepository extends CrudRepository<User, Integer> {//使用命名规范查询:fin 、findBy、read等public User findByName(String name);public List<User> findByNameAndAge(String name,String age);//小于 生成的JQL:where age<?1public List<User> findByAgeLessThan(String age);//大于 生成的JQL:where age>?1public List<User> findByAgeGreaterThan(String age);//is null 生成的JQL:where age is nullpublic List<User> findByAgeIsNull(String age);//like 生成的JQL:where age like ?1public List<User> findByAgeLike(String age);//使用@Query查询@Query("select u from User u")public List<User> getUser();//更新第一种方式:命名化参数@Transactional@Modifying//修改标识,必须写@Query("update User u set u.name=:name where u.age =:age ")public int updateUserByAge(@Param("name")String name,@Param("age")String age);//更新第二种方式:占位符@Transactional //必须加事务,或者在调用的地方,否则不能正常执行@Modifying//修改标识,必须写@Query("update User u set u.name=?1,u.sex=?2 where u.age =?3 ")public int updateUserByAge(String name,String sex ,String age);//使用本地化查询 不支持翻页和动态的排序@Modifying@Query(value="select u.* from user u where u.name like %?1",nativeQuery=true)public List<User> selctUserByNative(String name);//异步的方法 返回的是单一的对象@Asyncpublic Future<User> findByAge(String age);

0 0
原创粉丝点击