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);
}
上次更新时间: 2024/5/7 05:59:02