使用Spring Data JPA 获取数据库数据
程序员文章站
2022-06-30 19:06:09
使用Spring Data JPA 获取数据库数据目录使用Spring Data JPA 获取数据库数据1. 构建bean继承`org.springframework.data.repository.repository`的子接口2. 使用@Query + JPQL/SQL3. 在`service`中使用SQL/JPQL参考资料假若我们需要获取某一用户数据,则一般可以使用sql如下:select uid, uname, sex from user where sex = '男';但是如果现在使用...
使用Spring Data JPA 获取数据库数据
目录
假若我们需要获取某一用户数据,则一般可以使用sql如下:
select uid, uname, sex from user where sex = '男';
但是如果现在使用 Spring Data JPA ,那么该sql又该如何实现?
1. 构建bean继承org.springframework.data.repository.repository
的子接口
- 创建 User表的实体类
package com.demo.bean; import lombok.AllArgsConstructor; import lombok.Getter; import lombok.Setter; import lombok.ToString; import javax.persistence.*; import java.sql.Date; @Getter @Setter @AllArgsConstructor @Entity @ToString public class User{ @Id @GeneratedValue(strategy = GenerationType.AUTO) private long uid; private String uname; private String sex; public User(){}; }
- 创建接口并实现
JpaRepository
(该接口为repository
的子接口)package com.demo.repostory; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaSpecificationExecutor; import com.demo.bean.User; import java.sql.Date; import java.util.List; public interface UserRepository extends JpaRepository<User, Long> { List<User> findAllBySex(String Sex); }
- 创建
service
类package com.demo.service; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.demo.bean.User; import com.demo.repostory.UserRepository; @Service public class UserService { private UserRepository userRepository; /** * 建议使用构造器或setter进行依赖注入 */ public UserService(UserRepository userRepository ) { this.userRepository = userRepository; } public List<User> findAllBySex(String sex) { return userRepository.findAllBySex(sex); } }
- 使用测试类测试
package com.demo.jpademo; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import com.demo.bean.User; import com.demo.service.UserService ; import java.util.List; @SpringBootTest class JpaDemoApplicationTests { @Autowired UserService service; @Test void contextLoads() { List<User> list = service.findAllBySex(“男”); list.forEach(u -> System.out.println("姓名:" + u.getUname)); } }
2. 使用@Query + JPQL/SQL
-
修改上述案例中的
JpaRepository
package com.demo.repostory; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaSpecificationExecutor; import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Query; import com.demo.bean.User; import javax.transaction.Transactional; import java.sql.Date; import java.util.List; public interface UserRepository extends JpaRepository<User, Long> { /** * 如果涉及到了update、delete或insert, 则需要添加@Modifying 和 @Transactional。 * nativeQuery为false(默认)时使用的是JPQL,如果使用JPQL,则下面的sql需要改为: * <code>select u.uid, u.uname, u.sex from #{#entityName} where u.sex = ?1</code> */ @Transactional @Modifying @Query(value = "select uid, uname, sex from user where sex = ?1", nativeQuery = true) List<User> findAllBySex(String sex); }
3. 在service
中使用SQL/JPQL
如果在service
中使用sql,则可以不使用User
和UserRepository
。
package com.demo.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
import java.util.List;
@Service
public class UserService {
@PersistenceContext
private EntityManager entityManager;
public List findAllBySex(String uname) {
String sql = "select uid, uname, sex from user where sex = :sex";
Query query = entityManager.createNativeQuery(sql)
.setParameter("sex", sex);
List list = query.getResultList();
return list;
}
}
参考资料
- https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#jpa.repositories
- Spring Data JPA 常用的几种Repository接口
- JPQL Language Reference
本文地址:https://blog.csdn.net/Yinbin_/article/details/107370825
上一篇: 用Java打印金字塔
下一篇: Java 单例模式
推荐阅读
-
使用Spring Data JPA进行数据分页与排序
-
详解Spring Data JPA使用@Query注解(Using @Query)
-
Spring Data JPA使用Sort进行排序(Using Sort)
-
spring data jpa使用详解(推荐)
-
php使用sql数据库 获取字段问题介绍
-
python数据库操作常用功能使用详解(创建表/插入数据/获取数据)
-
【⭐】Java—Spring-—数据库操作—使用内置连接池,报读取不到驱动错误。Could not load JDBC driver class。
-
oracle 使用sql获取数据库表、表的字段的多种方法
-
Spring Boot入门(七):使用MyBatis访问MySql数据库(xml方式)
-
Spring Data数据持久化API JPA的使用