jpa数据库增删改查基本操作

1.插入一条数据(保存实体)
save(T entity)

2.查找一个特定实体
findOne(Id)

3.删除指定实体
delete(T entity);
delete(Id);

4.更新实体
@Transaction
@Modifying
@Query(“update Customer as c set c.name = ?1 where c.userid=?2”)
int updateNameById(String name, int id);

5.复杂查询
//设置排序字段和升降序
Order order1=new Order(Direction.DESC, “year”);
Order order2=new Order(Direction.DESC, “passengers”);
List list=new ArrayList<>();
list.add(order1);
list.add(order2);
//list添加顺序为首选条件和次选条件
Sort sort=new Sort(list);
//设置分页
Pageable p=new PageRequest(pageIndex,pageSize,sort);
//设置查询条件规范
Specification spec = new Specification() {
@Override
public Predicate toPredicate(Root root, CriteriaQuery query, CriteriaBuilder cb) {
//获取数据库表的某个字段
Path exp1 = root.get(“id”);
Path  exp2 = root.get(“year”);
Path  exp3 = root.get(“month”);
// where id=1 and year < data  与下方意思相同
Predicate predicate = cb.and(cb.equal(exp1, “1”),cb.lessThan(exp2, new Date()));
// where id = 1 and year = data 与下方意思相同
//Predicate predicate = cb.and(cb.equal(exp1, “1”),cb.equal(exp2, new Date()));
// where id = 1 or year = data 与下方意思相同
//Predicate predicate = cb.or(cb.equal(exp1, “1”),cb.equal(exp2, new Date()));
// where (id = 1 and year = data) or month = data 与下方意思相同
//Predicate predicate1 = cb.and(cb.equal(exp1, “1”),cb.equal(exp2, new Date()));
//Predicate predicate = cb.or(predicate1,cb.equal(exp3, new Date()));
return predicate;
}  
}; 
//查询出根据条件查询的排序分页后数据
Page page=infoDao.findAll(spec, p);

6.根据方法名构建查询
List findByUsername(String name);
List findByUsernameAndId(String name,long id);
List findByUsernameOrId(String name,long id);
//通过用户名获取数据列表根据Id倒序排列
List findByUsernameOrderByIdDesc(String name);
//根据用户名获取数据可分页排序
Page findByUsername(String name,Pageable pageable);
//根据用户名获取数据可添加排序功能
List findByUsername(String name,Sort sort);
//根据用户名获取数据可添加分页功能(可包含排序,也可不包含排序)
List findByUsername(String name,Pageable pageable);



你可能感兴趣的:(转载csdn博客)