public interface AccountDao extends JpaRepository<Account,Integer>,CrudRepository<Account,Integer> {
}
前面的是实体对象,后面的是主键id的类型。
1.save update差不多
@RequestMapping(value = "save", method = RequestMethod.GET)
public String postAccount(@RequestParam(value = "name") String name,
@RequestParam(value = "money") double money) {
Account account = new Account();
account.setMoney(money);
account.setName(name);
Account account1 = accountDao.save(account);
return account1.toString();
2.delete
@RequestMapping("/delete")
public void delete(String id) {
accountDao.deleteById(Integer.valueOf(id));
}
3.查询
public interface AccountDao extends JpaRepository<Account,Integer> {
@Query(value = "select * from account where name = ?1", nativeQuery = true)
public List<Account> nativeQuery(String name);
}
@Query
nativeQuery = true 表示使用原生sql查询。
配合事务和编辑可以执行修改删除操作
@Transactional
@Modifying
@Query(value = "delete from account where name = ?1", nativeQuery = true)
public void deleteByName(String name);
4.分页
创建base实体类
public class BaseAccountPage implements Serializable {
/**
* 默认页码
*/
private int page = 1;
/**
* 分页数量
*/
private int size = 10;
/**
* 排序名称
*/
private String index = "name";
/**
* <p>
* 排序正序
* <p>
*/
protected String sord = "asc";
控制器:
@RequestMapping("/queryByPage")
public List<Account> queryByPage(int pageNum) {
BaseAccountPage page = new BaseAccountPage();
page.setPage(pageNum);
page.setSize(5);
page.setSord("desc");
page.setIndex("id");
System.out.println(page.toString());
//获取排序对象
Sort.Direction direction = Sort.Direction.ASC.toString().equalsIgnoreCase(page.getSord()) ? Sort.Direction.ASC : Sort.Direction.DESC;
//根据排序对象排序
Sort sort = new Sort(direction, page.getIndex());
//创建分页对象
PageRequest pageRequest = new PageRequest(page.getPage()-1, page.getSize(), sort);
return accountDao.findAll(pageRequest).getContent();
}
5.自定义实例查询
当然也可以直接使用原生sql查询
@RequestMapping("/findByParam")
public Account findByParam(int id) {
// getOne返回引用对象 findOne返回实体,Optional 是一个包含或着不包含一个非空值的容器对象。
//getOne查不到报错。查到又不可以直接json返回,原因不详。
Account one = accountDao.getOne(3);
System.out.println(one.toString());
//根据 `实例` 查询Example
//这里条件会自动把int、duble的默认为0,注意一下。
Account account = new Account();
account.setId(10);
account.setMoney(12.0);
// 如果一个值存在,isPresent()将会返回true 并且 get() 将会返回所对应的值.
Example<Account> example = Example.of(account);
Optional<Account> optional = accountDao.findOne(example);
return optional.orElse(null);
}