JPA踩坑笔记(一) - 数据查询的两种方式

7 篇文章 0 订阅

本文介绍一下JPA常见的两种查询方式。
注:数据库为Oracle

1.前置准备

1.引入jar包
使用JPA,首先引入jar包,一个是JPA,另一个是数据库驱动,我使用的是Oracle数据库。

	<dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
        <groupId>com.oracle</groupId>
        <artifactId>ojdbc6</artifactId>
        <version>11.2.0.4</version>
    </dependency>

2.定义Entity

@Entity
@Data
@Table(name = "TEST_TABLE_01", schema = "LOCAL")
public class Table01Entity {
    @Id
    private long id;

    private String fileType;

    private String fileSize;

    private String fileName;
}

2.数据查询

方式一:使用自带的方法进行查询

此方法只适用于简单sql,优点是不需要写sql,直接在service里调用方法就好,代码比较简单。
service类

@Service
public class Table01ServiceImpl {
	@Autowired
    Table01Repository table01Repository;
    
	public Table01Entity findById(long id) {
		Table01Entity entity = table01Repository.findById(id);
		return entity;
	}
}

repository类,继承JpaRepository即可,不需要写任何方法。

@Repository
public class Table01Repository extends JpaRepository<Table01Entity, Long>, JpaSpecificationExecutor {

}

方式二:使用@query自定义sql

这种方式允许你自己写sql,方便实现比较复杂的查询。
service类

@Service
public class Table01ServiceImpl {
	@Autowired
    Table01Repository table01Repository;
    
	public Table01Entity findByIdOnYourOwn(long id) {
		Table01Entity entity = table01Repository.findByIdOnYourOwn(id);
		return entity;
	}
}

repository类,定义findByIdOnYourOwn()方法。

@Repository
public class Table01Repository extends JpaRepository<Table01Entity, Long>, JpaSpecificationExecutor {
	
	@Query(value = "select * from Table01Entity " +
	"where fileName=''123.txt")
	public List<Table01Entity> findByIdOnYourOwn();
}

你可能发现了,上面跟在from后面的并不是表名,而是Entity的名字,这是默认的写法,如果你想使用原生的sql,在@Query里加上nativeQuery = true就可以了

@Repository
public class Table01Repository extends JpaRepository<Table01Entity, Long>, JpaSpecificationExecutor {
	
	@Query(value = "select * from TEST_TABLE_01 t1" +
	"where t1.file_name=''123.txt", nativeQuery = true)
	public List<Table01Entity> findByIdOnYourOwn();
}

结束。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值
>