栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

jpa实现增删改查,分页,自定义查询,jpql查询

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

jpa实现增删改查,分页,自定义查询,jpql查询

1.jpa实现增删改查,分页

配置文件application.properties

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/login?useUnicode=true&characterEncoding=utf-8
spring.datasource.username=root
spring.datasource.password=123456
#update:只创建一次,数据累加
#create:每次都重新创建一次,数据替换
spring.jpa.hibernate.ddl-auto=update

Pet类

//表明当前是一个实体类,自动创建表t_pet与之映射,若不加name,默认创建和实体类名称一样的表pet
@Entity(name = "t_pet")
public class Pet {
    //注解id,并设置主键--》自动增加
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    Integer id;
    // @Column标识是一个普通的字段
    @Column
    String pname;
    @Column
    String color;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getPname() {
        return pname;
    }

    public void setPname(String pname) {
        this.pname = pname;
    }

    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }
}
public Pet() {

    }
    public Pet(Integer id, String pname, String color) {
        this.id = id;
        this.pname = pname;
        this.color = color;
    }

    @Override
    public String toString() {
        return "Pet{" +
                "id=" + id +
                ", pname='" + pname + ''' +
                ", color='" + color + ''' +
                '}';
    }

PetDao类

//JpaRepository
//T:表示具体操作的实体类,Pet
//ID:表示主键的类型,Integer
public interface PetDao extends JpaRepository {

}

测试类

@SpringBootTest
class PetApplicationTests {

    //@Autowired和@Resource相同,都是表明一个对象
    @Resource
    PetDao petDao;
    
    @Test
    public void addPet(){
        System.out.println("添加成功");
        Pet pet = new Pet();
        //id自增,不需要设置
        pet.setPname("小狗");
        pet.setColor("白色");
        //完成添加操作
        petDao.save(pet);
    }
    @Test
    public void updatePet(){
        System.out.println("更新成功");
        Pet pet = new Pet();
        pet.setId(2);
        pet.setPname("小毛");
        pet.setColor("花色");
        //完成添加操作
        petDao.save(pet);
    }
    
    @Test
    void selectPet(){
        Optional optionalPet = petDao.findById(1);
        //调用Optional对象里的get()方法
        Pet pet = optionalPet.get();
        System.out.println(pet.getId()+"t"+pet.getPname()+"t"+pet.getColor());
    }
    //查找全部 findAll():
    
    @Test
    void findAllPet(){
        List list = petDao.findAll();
        //有toString方法,可以直接输出pet对象
        for (Pet pet:list) {
            System.out.println(pet);
        }
    }
    //查找到的数据按pname升序排序
    @Test
    void findAllPets(){
        List list = petDao.findAll(Sort.by("pname"));
        //有toString方法,可以直接输出pet对象
        for (Pet pet:list) {
            System.out.println(pet);
        }
    }
    //分页查询
    @Test
    void findPage(){
        
        Pageable pageable = PageRequest.of(1,2,Sort.Direction.ASC,"id");
        Page pets = petDao.findAll(pageable);
        //获取元素的个数
        System.out.println("元素个数"+pets.getTotalElements());
        //获取页码总数
        System.out.println("总页数"+pets.getTotalPages());
        for (Pet pet : pets) {
            System.out.println(pet);
        }
    }
    //删除操作
    @Test
    void deletePet(){
        //法1.通过删除对象,先查询id,然后将传入的对象删除
        //Pet pet = new Pet();
        //pet.setId(1);
        //petDao.delete(pet);
        //法2.通过id删除
        petDao.deleteById(3);
        System.out.println("删除成功");
    }
}

2.自定义查询

PetDao接口

public interface PetDao extends JpaRepository {
    
    //定义通过pname查询
    List findByPname(String pname);
    //定义通过color查询
    List findByColor(String color);
    //定义通过pname和color联合查询
    List findByPnameAndColor(String pname,String color);
    //根据id查询,查询id在一个范围内的Pet对象
    List findByIdBetweenOrderById(Integer minId,Integer maxId);
    //去测试类中调用
}

测试类

//自定义查找
    @Test
    void findPname(){
        //通过pname查询
        List list = petDao.findByPname("松鼠");
        System.out.println(list);
        //通过color查询
        List listColor = petDao.findByColor("花色");
        System.out.println(listColor);
        //定义通过pname和color联合查询
        List byPnameAndColor = petDao.findByPnameAndColor("兔兔", "花色");
        System.out.println(byPnameAndColor);
        //查询id:1-4之间的
        List byIdBetweenOrderById = petDao.findByIdBetweenOrderById(1, 4);
        System.out.println(byIdBetweenOrderById);

    }
3.jpql查询


PetDao接口

//jpql查询
   
    //@Query(value = "from pet.domain.Pet")
    @Query("select A from pet.domain.Pet A")
    List loadPetsList();
    

测试类

//jpql查询
    @Test
    void jpqlFind(){
        List pets = petDao.loadPetsList();
        System.out.println(pets);

    }


2.查询pname和color
PetDao接口

    @Query("select pname,color from pet.domain.Pet")
    List loadPetsList2();

测试类

@Test
    void test(){
        List objects = petDao.loadPetsList2();
        for (Object[] object : objects) {
            System.out.println(Arrays.toString(object));
        }
    }


—》查询的数据封装到Pet

//2.查询的数据封装到Pet
@Query("select new pet.domain.Pet(id,pname,color) from pet.domain.Pet pet")
List loadPetsList3();

测试类
@Test
void test1(){
    List pets = petDao.loadPetsList3();
    System.out.println(pets);
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/345389.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号