Spring-Data JPA简单数据操作~

150 阅读2分钟

「这是我参与2022首次更文挑战的第20天,活动详情查看:2022首次更文挑战

增加

保存客户实体:调用save(obj)方法

step1:构造一个对象并设置其属性。

step2:调用继承了JpaRepository接口的Dao层内置save方法。

代码示例:

    @Test
    public void save() {
        Customer c = new Customer();
        c.setCustName("李大嘴");
        customerDao.save(c);
    }

查询

查询id为1的实体:调用findOne()方法

step:直接调用findOne()方法传入需要查询的id,即可根据id查询到数据。

代码示例:

    @Test
    public void findOne() {
        Customer customer = customerDao.findOne(1L);
        System.out.println(customer);
    }
    @Test
    public void getOne() {
        Customer customer1 = customerDao.getOne(1L);
        System.out.println(customer1);
    }

findOne()的区别getOne()?

  • getOne()采用懒加载的方式(查询的结果是对象的引用) 查询数据,只有当查询到的对象被使用时才会去真正执行sql查询数据。而findOne() (查询实体的optional对象) 并非如此,而是执行到这条语句时就会立即执行相应sql查询数据。

  • getOne()可以有效的提高系统效率但是可能会有空指针的异常错误的出现,谨慎使用!

查询所有数据:调用findAll()方法

step:直接调用findAll()方法即可返回数据记录。

代码示例:

    @Test
    public void findAll() {
        List<Customer> all = customerDao.findAll();
        for (Customer x : all) {
            System.out.println(x);
        }
    }

修改

修改id为1的实体:调用save(obj)方法

step1:根据id查询到要修改的数据。

step2:调用继承了JpaRepository接口的Dao层内置save方法。

代码示例:

    @Test
    public void update() {
        Customer customer = customerDao.findOne(1l);
        customer.setCustName("李大嘴2");
        customerDao.save(customer);
    }

删除

删除id为1的实体:调用delete()方法

step:调用继承了JpaRepository接口的Dao层内置delete方法。

代码示例:

    @Test
    public void deleteOne() {
        Customer customer = customerDao.delete(1l);
    }

删除所有实体:调用deleteAll()方法

step:调用继承了JpaRepository接口的Dao层内置deleteAll方法。

@Test
    public void deleteAll() {
        Customer customer = customerDao.deleteAll();
    }

明天继续加油!