2019-10-23Spring Data Jpa实现

Jpadao层接口

package cn.itcast.dao;

import cn.itcast.entity.Customer;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;

/*
* 符合SpringDataJpa的dao层接口规范
* JpaRepository<操作的实体类泛型,实体类中主键属性的类型>
*       *封装了基本增删改查操作
* JpaSpecificationExecutor<操作的实体类类型>
*       *封装了复杂查询(分页)
* */

public interface CustomerDao extends JpaRepository, JpaSpecificationExecutor {
}

测试增删改查

package cn.itcast.test;

import cn.itcast.entity.Customer;
import cn.itcast.dao.CustomerDao;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import java.util.List;

@RunWith(SpringJUnit4ClassRunner.class)//声明spring提供的单元测试环境
@ContextConfiguration(locations = "classpath:applicationContext.xml")//指定spring容器的配置信息
public class CustomerDaoTest {
@Autowired
    private CustomerDao customerDao;
/*
* 根据id查询
* */
@Test
    public void testFindOne(){
    Customer one = customerDao.findOne(3l);
    System.out.println(one);
        }
        /*
        * save:保存或者更新
        *       根据传递对象是否存在主键id
        *       如果没有主键id属性,保存
        *       存在主键id属性,根据id查询数据,更新数据
        * */
        @Test
    public void testSave(){
            Customer customer = new Customer();
        customer.setCustName("小李子");
        customer.setCustLevel("vip");
        customer.setCustIndustry("it教育");
        customerDao.save(customer);
        }
    @Test
    public void testUpData(){
        Customer customer = customerDao.findOne(3l);
        customer.setCustName("刘强东");
        customerDao.save(customer);
    }
    /*
    *删除用户
    * */
    @Test
    public void testDelete(){
        customerDao.delete(6l);
    }
    /*
    *查询所有
    **/
    @Test
    public void testFindALll(){
        List all = customerDao.findAll();
        for (Customer customer:all){
            System.out.println(customer);
        }
    }
    /*
    * 测试统计查询:查询客户的总数量
    * */
    @Test
    public void testCount(){
        long count = customerDao.count();
        System.out.println(count);
    }
    /*
    *测试:判断id为3的客户是否存在
    *       1.可以查询以下id为3的客户
    *           如果为空,代表不纯正,如果不为空,代表纯在
    *       2.判断数据库中id为3的客户的数量
    *           如果数量为0,代表不存在,如果大于0,代表存在
    * */
    @Test
    public void testExists(){
        boolean exists = customerDao.exists(3l);
        System.out.println(exists);
    }
    /*
    * 根据id查询用户
    *  findOne:
    *       em.find()           :立即加载
    * getOne:
    *       em.getReference     :延迟加载
    *       *返回的是一个客户的动态代理对象
    *       *什么时候用,什么时候查询
    * */
    @Test
    @Transactional//保证getOne正常运行
    public void testGetOne(){
        Customer one = customerDao.getOne(3l);
        System.out.println(one);
    }
}

image.png

你可能感兴趣的:(2019-10-23Spring Data Jpa实现)