当前位置: 首页 > news >正文

千博企业网站管理系统完整版 201451外链代发网

千博企业网站管理系统完整版 2014,51外链代发网,哈尔滨做网站的价格,聊城手机网站建设价格1、简介 Java持久化技术是Java开发中比较重要的部分,主要用于将对象数据持久化到数据库,或者从数据库中查询数据,简化数据库的CRUD操作。 2、JPA简介 JPA(Java Persistence API)是Java实现ORM(Object Re…

1、简介

Java持久化技术是Java开发中比较重要的部分,主要用于将对象数据持久化到数据库,或者从数据库中查询数据,简化数据库的CRUD操作。

2、JPA简介

JPA(Java Persistence API)是Java实现ORM(Object Relational Mapping)技术提供的规范,主要用于将Java对象映射到关系数据库,便于持久化操作。

3、Spring Data JPA简介

Spring Data JPA是Spring 框架下的一个模块,是基于JPA规范实现的上层封装,旨在简化JPA的使用。Spring Data JPA提供了一些常用的接口,例如JpaRepository、JpaSpecificationExecutor,这些接口中包含了很多CRUD操作方法,同时提供了基于方法命名规范的查询方法,可以根据方法自动生成相应的SQL。

除了基础的CRUD操作,Spring Data JPA还提供很多高级功能,例如分页查询、排序、动态查询等,同时支持多种数据库,例如MySQL、PostgreSQL、Oracle等。

  • Spring Data JPA 是 Spring Data 项目家族中的一员,它为基于Spring框架应用程序提供了更加便捷和强大的数据操作方式。
  • Spring Data JPA 支持多种数据存储技术,包括关系型数据库和非关系型数据库。
  • Spring Data JPA 提供了简单、一致且易于使用的API来访问和操作数据存储,其中包括基本的CRUD操作、自定义查询方法、动态查询等功能。
  • Spring Data JPA 也支持QueryDSL、Jinq、Kotlin Query等其他查询框架

4、快速使用

4.1、添加依赖

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

4.2、创建实体类

1、实体类必须使用@Entity注解、还可以添加@Table映射表名,使用lombok的@Data

package com.mqtt.mqttproject.entity;import lombok.Data;
import javax.persistence.*;/*** @ Author : Gridsum* @ Description : 测试实体类*/
@Entity
@Table(name = "user")
@Data
public class User {@Id@GeneratedValue(strategy = GenerationType.IDENTITY)private Long id;@Column(name = "name")private String name;@Column(name = "age")private Integer age;@Column(name = "addr")private String addr;
}

4.3、创建Repository接口

package com.mqtt.mqttproject.repository;import com.mqtt.mqttproject.entity.User;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;@Repository
public interface UserRepository extends JpaRepository<User, Long> {User findByName(String name);
}

实现类

package com.mqtt.mqttproject.service.impl;import com.mqtt.mqttproject.entity.User;
import com.mqtt.mqttproject.repository.UserRepository;
import com.mqtt.mqttproject.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;/*** @ Author : Gridsum* @ Description :*/
@Service
public class UserServiceImpl implements UserService {@Autowiredprivate UserRepository userRepository;@Overridepublic User findByName(String name) {return userRepository.findByName(name);}@Overridepublic void save(User user){userRepository.save(user);}
}

4.4、基本CRUD

定义Repository接口,继承JpaRepository<T, ID>,泛型T指实体类,ID实体id。

方法名描述
T save(T entity)保存实体对象
Iterable saveAll(Iterable entities)批量保存实体对象
Optional findById(ID id)根据主键获取实体对象
boolean existsById(ID id)判断是否存在特定主键的实体对象
Iterable findAll()获取所有实体对象
Iterable findAllById(Iterable ids)根据主键批量获取实体对象
long count()获取实体对象的数量
void deleteById(ID id)根据主键删除实体对象
void delete(T entity)删除实体对象
void deleteAll(Iterable<? extends T> entities)批量删除实体对象
package com.mqtt.mqttproject.repository;import com.mqtt.mqttproject.entity.User;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;import java.util.List;
import java.util.Optional;@Repository
public interface UserRepository extends JpaRepository<User, Long> {User findByName(String name);@OverrideUser save(User user);@OverrideOptional<User> findById(Long id);@OverrideList<User> findAll();@Overridevoid deleteById(Long id);
}

4.5、自定义查询

方法名称查询是 Spring Data JPA 中最简单的一种自定义查询方法,并且不需要额外的注解或 XML 配置。它通过方法名来推断出查询的条件,例如以 findBy 开头的方法表示按照某些条件查询,以 deleteBy 开头的方法表示按照某些条件删除数据。

 例如 findByName(String name)

@Repository
public interface UserRepository extends JpaRepository<User, Long> {User findByName(String name);@OverrideUser save(User user);@OverrideOptional<User> findById(Long id);@OverrideList<User> findAll();@Overridevoid deleteById(Long id);
}

4.5.1、查询参数设置

除了方法名称查询外,还可以使用参数设置方式进行自定义查询。它通过在方法上使用 @Query 注解来指定查询语句,然后使用 @Param 注解来指定方法参数与查询语句中的参数对应关系。 

UserRepository接口中自定义查询接口:

@Query("SELECT u FROM User u WHERE u.name = :name")
User findByUserName(@Param("name") String name);

 4.6、使用 Sort 和 Pageable 进行排序和分页

在查询数据时,经常需要对结果进行排序和分页操作。Spring Data JPA 提供了 SortPageable 两个类来实现排序和分页功能。

Sort 类表示排序规则,可以使用 Sort.by() 静态方法

创建实例,并指定排序属性和排序方向。常用方法如下:

方法名描述
static Sort by(Sort.Order... orders)根据排序规则创建 Sort 实例
static Sort.Order by(String property)根据属性升序排序
static Sort.Order by(String property, Sort.Direction direction)根据属性排序
    List<User> findByOrderByAgeAsc();// 根据年龄降序分页查询用户列表Page<User> findBy(Pageable pageable);

4.7、Specification 进行动态查询

在实际应用中,我们经常需要根据条件动态生成查询语句。Spring Data JPA 提供了 Specification 接口来支持动态查询,它可以通过使用匿名内部类或 Lambda 表达式来实现。

Specification 接口定义了 toPredicate() 方法,该方法接受一个 Root<T> 对象和一个 CriteriaQuery<?> 对象作为参数,并返回一个 Predicate 对象,表示查询条件。

toPredicate() 方法内部,可以通过 root.get() 方法获取实体属性,并使用 criteriaBuilder 构建查询条件。 1.例如,以下 Lambda 表达式表示查询 age 大于等于 18 的用户。

 

public interface UserRepository extends JpaRepository<User, Long>, JpaSpecificationExecutor<User> {List<User> findAll(Specification<User> spec);
}// 使用
Specification<User> spec = (root, query, criteriaBuilder) -> criteriaBuilder.greaterThanOrEqualTo(root.get("age"), 18);
userRepostory.findAll(spec);

http://www.mnyf.cn/news/14970.html

相关文章:

  • 南阳卧龙区高端网站建设口碑鄞州seo服务
  • 3gb2c.com是什么网站网络推广网站
  • 直播软件排名谷歌搜索引擎优化seo
  • 东京热 在线A视频网站一级做爰片培训网站推广
  • 网站建设 徐州今日新闻摘抄二十条
  • 三原做网站网站发帖推广平台
  • 沈阳网上房屋备案查询兰州seo培训
  • 做外贸网站需要什么卡关键词语有哪些
  • 做pc端网站好么英文谷歌seo
  • 私人让做彩票网站吗seo优化排名方法
  • 自己做购物网站需要什么外贸网站建设报价
  • 化州网站建设怎么建网站免费的
  • 网站内页如何做排名elo机制
  • 怎么在搜狐快站上做网站河南智能seo快速排名软件
  • 中英文网站是怎么做的app数据分析软件
  • 校园网站建设必要性网站模板哪家好
  • vR网站建设程序最新国际新闻大事件
  • 美工设计网站推荐创意营销案例
  • 北京国贸网站建设公司常见的网站推广方法有哪些
  • 开发公司抽奖送房seo引擎优化软件
  • 北京网站设计技术乐云seoseo内容优化方法
  • 天河区做网站免费的网站软件
  • python编程网页版百度推广seo效果怎么样
  • 销售网站平台怎么做的seo学习论坛
  • 常见的网站结构有汕头自动seo
  • 介绍自己做的网站的论文知名的网络推广
  • 网站页面确认书新闻平台发布
  • it外包公司工资一般多少青岛seo关键词优化排名
  • 苏州专业网站制作设计seo咨询邵阳
  • wordpress新建页面404上海网络排名优化