jpa query oracle 参数int为空_springboot整合springdata-JPA

Spring Data JPA 介绍

Spring Data:其实 Spring Data 就是 spring 提供了一个操作数据的框架。而 Spring Data JPA只是 Spring Data 框架下的一个基于 JPA 标准操作数据的模块。Spring Data JPA:基于 JPA 的标准对数据进行操作。简化操作持久层的代码。只需要编写接口就可以。

1 搭建整合环境

4207de21085ae32aa11b20fbd32557c2.png

2修改pom文件配置

3c70ceb798e42c084249f5e9af4ca1b7.png

456edc7bc0853da7caf929730529e81f.png

3 在项目中添加 application.properties 文件

f6dbf6d3a7746c5bb2262c86a91501e2.png

4 添加实体类

2a62c3708c5c0ef96f6421f383d04fde.png

a4725e943e4846f75141bdeb3bb5bea0.png

5 编写 Dao 接口

01c192f1aee25f583f5144dc7ffb7f28.png

6 在 pom 文件中添加测试启动器的坐标

690cc66567a06a7f0dfac872426aa709.png

7 创建启动类

db798c45850fcf77d052e3cfc251f260.png

8 编写测试代码

e1a3a756b7c2971fd4bebdf6eeed032d.png

d6f8eef89cbae42478cf2f9ef8f7bb9d.png

Spring Data JPA 提供的核心接口

1 Repository 接口

2 CrudRepository 接口

3 PagingAndSortingRepository 接口

4 JpaRepository 接口

5 JPASpecificationExecutor 接口

(1) Repository接口的作用是什么?
提供了方法名称命名方式查询、提供了基于注解@query查询与更新

(2) 方法名称命名查询方式的规则是什么?
方法的名称必须要遵循驼峰式命名规则,findBy(关键字)+属性名称(首字母要大写)+查询 条件(首字母大写)

(3) @Query注解的作用是什么?
query可以传递sql、hql语句信息进行查询和更新

(4) @Modifying注解的作用是什么?
表示当前进行的是更新操作

(5) CrudRepository接口的作用是什么?
主要是完成一些增删改查操作

(6) CrudRepository接口的继承结构是什么样的?
crudrepository接口继承repository接口

(7) CrudRepository接口中有哪些常见方法?
save、findall、findone、delete

(8) PagingAndSortingRepository接口的作用是什么?
分页与排序

(9) PagingAndSortingRepository的继承结构是什么样的?
该接口继承了crudrepository接口

(10) PagingAndSortingRepository排序的步骤是什么?
order定义排序规则、创建sort对象封装排序规则、调用接口的save方法,将sort对象信息作为参数执行操作

(11) PagingAndSortingRepository分页的步骤是什么?
创建pageable对象封装分页的参数,将该对象作为参数执行接口的查询更新方法执行操作

(12) JpaRepository接口的作用是什么?
继承pagingandsortingrepository接口,对继承的父接口中的方法的返回值进行适配

(13) JpaRepository继承结构是什么样的?
继承pagingandsortingrepository接口

(14) JPASpecificationExecutor接口的作用是什么?
提供多条件查询的支持,并且可以在查询中添加分页与排序操作

(15) JPASpecificationExecutor接口的继承结构是什么样的?
继承jparepository接口

(16) Specification对象的作用是什么?
用于封装查询条件

(17) @GeneratedValue注解的作用是什么?
提供四种属性值,可以使得主键自增

(18) @ManyToOne注解的作用是什么?
多对一关系

(19) @JoinColumn注解的作用是什么?
维护外键

(20) @ManyToMany注解的作用是什么?
多对多关系

(21) @JoinTable注解的作用是什么?
映射中间表

整合ehcache

1 修改 pom 文件

<!-- Ehcache 坐标 -->
<dependency>
   <groupId>net.sf.ehcache</groupId>
   <artifactId>ehcache</artifactId>
</dependency

2 创建 Ehcache 的配置文件

文件名:ehcache.xml

位置:src/main/resources/ehcache.xml

<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="../config/ehcache.xsd">
<diskStore path="java.io.tmpdir"/>
<!--defaultCache:echcache 的默认缓存策略 -->
<defaultCache
maxElementsInMemory="10000"
eternal="false"
timeToIdleSeconds="120"
timeToLiveSeconds="120"
maxElementsOnDisk="10000000"
diskExpiryThreadIntervalSeconds="120"
memoryStoreEvictionPolicy="LRU">
<persistence strategy="localTempSwap"/>
</defaultCache>
<!-- 自定义缓存策略 -->
<cache name="users"
maxElementsInMemory="10000"
eternal="false"
timeToIdleSeconds="120"
timeToLiveSeconds="120"
maxElementsOnDisk="10000000"
diskExpiryThreadIntervalSeconds="120"
memoryStoreEvictionPolicy="LRU">
<persistence strategy="localTempSwap"/>
</cache>
</ehcache>

3 修改 application.properties 文件

spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/ssm
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.cache.ehcache.cofnig=ehcache.xml

4 修改启动类

@SpringBootApplication
@EnableCaching
public class App {
  public static void main(String[] args) {
  SpringApplication.run(App.class, args);
  }
}

5 创建业务层

//@Cacheable:对当前查询的对象做缓存处理

@Cacheable 作用:把方法的返回值添加到 Ehcache 中做缓存

Value 属性:指定一个 Ehcache 配置文件中的缓存策略,如果么有给定 value,name 则表示使用默认的缓存策略

Key 属性:给存储的值起个名称。在查询时如果有名称相同的,那么则知己从缓存中将数据返回

@Cacheable(value="xxx")

6 修改实体类 Users

package com.bjsxt.pojo;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name="t_users")
public class Users {

	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	@Column(name="id")
	private Integer id;
	@Column(name="name")
	private String name;
	@Column(name="age")
	private Integer age;
	@Column(name="address")
	private String address;
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Integer getAge() {
		return age;
	}
	public void setAge(Integer age) {
		this.age = age;
	}
	public String getAddress() {
		return address;
	}
	public void setAddress(String address) {
		this.address = address;
	}
	@Override
	public String toString() {
		return "Users [id=" + id + ", name=" + name + ", age=" + age + ", address=" + address + "]";
	}
	
	
}

7 测试

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值