Spring与Jpa整合Word文件下载.docx

上传人:b****5 文档编号:17322765 上传时间:2022-12-01 格式:DOCX 页数:41 大小:114.79KB
下载 相关 举报
Spring与Jpa整合Word文件下载.docx_第1页
第1页 / 共41页
Spring与Jpa整合Word文件下载.docx_第2页
第2页 / 共41页
Spring与Jpa整合Word文件下载.docx_第3页
第3页 / 共41页
Spring与Jpa整合Word文件下载.docx_第4页
第4页 / 共41页
Spring与Jpa整合Word文件下载.docx_第5页
第5页 / 共41页
点击查看更多>>
下载资源
资源描述

Spring与Jpa整合Word文件下载.docx

《Spring与Jpa整合Word文件下载.docx》由会员分享,可在线阅读,更多相关《Spring与Jpa整合Word文件下载.docx(41页珍藏版)》请在冰豆网上搜索。

Spring与Jpa整合Word文件下载.docx

<

id>

io.spring.repo.maven.release<

/id>

url>

http:

//repo.spring.io/release/<

/url>

snapshots>

enabled>

false<

/enabled>

/snapshots>

/repository>

/repositories>

Formilestones:

io.spring.repo.maven.milestone<

//repo.spring.io/milestone/<

Andforsnapshots:

io.spring.repo.maven.snapshot<

//repo.spring.io/snapshot/<

true<

以下是Jboss的MavenRepository

org.jboss.repo.maven.release<

https:

//repository.jboss.org/nexus/content/repositories/release<

org.jboss.repo.maven.snapshot<

//repository.jboss.org/nexus/content/repositories/snapshot/<

接下来,引用相应的依赖,首先是spring。

关于这一点,可以参考spring的参考手册。

//docs.spring.io/spring/docs/4.1.0.BUILD-SNAPSHOT/spring-framework-reference/htmlsingle/#overview-maven-dependency-management。

关于Hibernate的包引用,参考http:

//hibernate.org/orm/documentation/getting-started/。

其它依赖根据需要,逐一添加。

以下提供Spring及Hibernate基本依赖:

dependency>

<

groupId>

org.springframework<

/groupId>

artifactId>

spring-context<

/artifactId>

version>

4.0.5.RELEASE<

/version>

exclusions>

<

exclusion>

<

commons-logging<

/exclusion>

/exclusions>

<

/dependency>

spring-context-support<

spring-orm<

spring-jdbc<

spring-beans<

spring-aop<

spring-webmvc<

spring-web<

spring-tx<

spring-test<

spring-expression<

org.springframework.data<

spring-data-jpa<

1.6.0.RELEASE<

org.slf4j<

jcl-over-slf4j<

1.5.8<

slf4j-api<

slf4j-log4j12<

log4j<

1.2.14<

org.aspectj<

aspectjweaver<

1.8.0<

!

--hiberanteentitymanager-->

org.hibernate<

hibernate-entitymanager<

4.3.5.Final<

javax.servlet<

javax.servlet-api<

3.0.1<

构建实体

EMP

@Entity

@Table(name="

EMP"

publicclassEmployeeimplementsSerializable{

privatestaticfinallongserialVersionUID=1L;

/**雇员编号**/

@Id

@Column(name="

EMPNO"

privateIntegerno;

/**雇员姓名**/

ENAME"

length=10)

privateStringname;

/**职位**/

JOB"

length=9)

privateStringjob;

/**经理**/

@ManyToOne

@JoinColumn(name="

MGR"

privateEmployeemanager;

/**员工**/

@OneToMany(mappedBy="

no"

@OrderBy("

noASC"

privateList<

Employee>

employees;

/**雇佣日期**/

HIREDATE"

privateDatehireDate;

/**工资**/

SAL"

precision=7,scale=2)

privateBigDecimalsalary;

/**佣金**/

COMM"

privateBigDecimalcommission;

/**部门**/

DEPTNO"

privateDepartmentdepartment;

}

DEPT

publicclassDepartmentimplementsSerializable{

/**部门编号**/

/**部门名称**/

DNAME"

length=14)

/**地址**/

LOC"

length=13)

privateStringlocation;

publicIntegergetNo(){

returnno;

}

publicvoidsetNo(Integerno){

this.no=no;

publicStringgetName(){

returnname;

publicvoidsetName(Stringname){

this.name=name;

publicStringgetLocation(){

returnlocation;

publicvoidsetLocation(Stringlocation){

this.location=location;

Jpa实体的注解,需要注意以下几点:

1、必须要有一个无参的构造函数,如果你需要多个构造函数,那么这个无参的构造函数需要显示的指定,且它应该是protected或private。

2、枚举类型或者接口不能被指定为实体。

3、如果实体需要继承某个类的私有化持久状态(即拥有父类中标注有诸如@Column的私有化属性),只需要在父类上标注@MappedSuperclass即可。

通常这样做的目的是,将一些表的公共字段部分抽取出来单独在一个类中声明,避免造成重复声明及类过度冗余。

4、如果实体类的主键是一个复合主键,需要将作为复合主键的字段单独放在一个类里面。

将这个复合主键类标注@Embeddable,然后在实体类中引用这个复合主键类并标注@EmbeddedId;

或者跟一般的实体一样,在为主键的属性上标注@Id,然后于实体类上标注@IdClass指定复合主键类。

具体如下示例

Embeddable的形式

@Embeddable

publicclassFeeKindPKimplementsSerializable{

privatestaticfinallongserialVersionUID=-5793813579472602179L;

/**还款期数/贷款期限**/

REPAY_PERIOD"

privateIntegerrepayPeriod;

/**合作机构编号**/

MERCHANT_CODE"

length=100)

privateStringmerchantCode;

/**利费率**/

FEE_KIND"

length=6)

privateStringfeeKind;

VIEW_FEE_KIND"

publicclassFeeKindimplementsSerializable{

@EmbeddedId

privateFeeKindPKpk;

publicFeeKindPKgetPk(){

returnpk;

publicvoidsetPk(FeeKindPKpk){

this.pk=pk;

IdClass形式:

publicclassLoanFileCheckPKimplementsSerializable{

privatestaticfinallongserialVersionUID=5884791330896732971L;

privateLoanApplyloanApply;

privateIntegerseqNo;

LOAN_FILE_CHECK"

@IdClass(LoanFileCheckPK.class)

publicclassLoanFileCheckimplementsSerializable{

/**进件编号*/

APPLICATION_NUMBER"

foreignKey=@ForeignKey(name="

FK_FILE_CHECK_APPNUM"

))

/**序號*/

SEQ_NO"

columnDefinition="

NUMBER(6,0)"

privateIntegerseqNo;

需要注意的是,以下规则适用于复合主键类:

1、类的访问修饰符必须是public,必须有一个无参的公有的构造方法。

2、复合主键类必须被序列化,也就是实现Serializable接口。

3、重写hashCode和equals方法。

4、如果用IdClass的形式,主键类中的属性名称和类型必须和实体类中的属性名称和类型相同。

5、另外,如果实体类中在一个集合属性上引用@OneToMany的时候,可以用属性fetch=FetchType.LAZY表示集合是懒加载的,用mappedBy到实体类中的某个属性,表示由实体类的该属性来维护。

标注@OrderBy(“<

属性名>

排序方式>

...”)来表示实体类下的该集合在加载时候的排序方式,可以有多个,用逗号隔开。

如Employee类所示。

持久层

Repository接口

@Repository

publicinterfaceEmployeeRepositoryextendsJpaRepository<

Employee,String>

{

publicinterfaceDepartmentRepositoryextendsJpaRepository<

Department,String>

1、我们主要使用SpringJpa实现对数据持久化的操作。

使用SpringJpa,只需要在接口中标注@Repository,并声明需要使用到的接口方法,而不用真正的去实现它,因为SpringJpa已经为我们提供了默认的接口实现类(SimpleJpaRepository)。

2、通过@Repository注解表示该接口为数据持久化接口。

并在Spring的配置文件中声明<

jpa:

repositoriesbase-package=””/>

(需要引入jpa命名空间)来指定Repository所有的位置,这样它会自动被Spring容器扫描,初始化并管理。

3、一般地,Repository接口继承了JpaRepository<

T,ID>

这个接口已经为我们提供了一些基本的常用的操作(增删改查),比如通过主键获取实例findOne,获取所有的实例findAll等。

详细请参考JpaRepository的API。

现在,如果我们需要一个方法,根据指定的日期,查询出在这个日期之前入职的所有员工,那么我们只需要在EmployeeRepository中声明这样的一个方法:

List<

findByHireDateLessThanEqual(DatehireDate);

这样,在查询的时候,SpringJpa就会自动为我们构建如下的jpql查询语句:

SelectefromEmployeeewheree.hireDate<

=?

1

关于这一点,可以查看SpringJpa的参考手册,http:

//docs.spring.io/spring-data/jpa/docs/1.6.0.RELEASE/reference/html/jpa.repositories.html在这里仅列出方法中可使用的关键字:

Keyword

Sample

JPQLsnippet

And

findByLastnameAndFirstname

…wherex.lastname=?

1andx.firstname=?

2

Or

findByLastnameOrFirstname

1orx.firstname=?

Is,Equals

findByFirstname,findByFirstnameIs,findByFirstnameEquals

…wherex.firstname=1?

Between

findByStartDateBetween

…wher

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > 财会金融考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1