1,先保证升级相关的类库
<org.springframework-version>4.1.7.RELEASE</org.springframework-version>
<spring.data.jpa.version>1.9.6.RELEASE</spring.data.jpa.version>
<org.hibernate-version>5.0.8.Final</org.hibernate-version>
2,create stored procedure
PROCEDURE xxSearch_member(xPara in nvarchar2, xcur_ret out nvarchar2) is
xkey1 varchar2(100);
xkey2 varchar2(100);
xname varchar2(100);
begin
xkey1 := xxXml_child_text(xPara,'key1');
xkey2 := xxXml_child_text(xPara,'key2');
xName := xxXml_child_text(xPara,'name');
xcur_ret :='<users><user><userId>1</userId><userName>Tom</userName></user><user><userId>2</userId><userName>Jos</userName></user></users>';
end xxSearch_member;
3,修改PO
@Entity
@Table(name="W_USER")
@NamedQuery(name="UserId.findAll", query="SELECT u FROM UserId u")
@NamedStoredProcedureQueries(value = {
@NamedStoredProcedureQuery(name="UserId.searchMember", procedureName = "TRAN_PROC.xxSearch_member",parameters = {
@StoredProcedureParameter(mode = ParameterMode.IN, type = String.class),
@StoredProcedureParameter(mode = ParameterMode.OUT, type = String.class) })
,
@NamedStoredProcedureQuery(name = "UserId.testPro", procedureName = "TRAN_PROC.testPro", parameters = {
@StoredProcedureParameter(mode = ParameterMode.IN, type = Integer.class),
@StoredProcedureParameter(mode = ParameterMode.OUT, type = Integer.class)
})
})
public class UserId implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private long id;
<org.springframework-version>4.1.7.RELEASE</org.springframework-version>
<spring.data.jpa.version>1.9.6.RELEASE</spring.data.jpa.version>
<org.hibernate-version>5.0.8.Final</org.hibernate-version>
2,create stored procedure
PROCEDURE xxSearch_member(xPara in nvarchar2, xcur_ret out nvarchar2) is
xkey1 varchar2(100);
xkey2 varchar2(100);
xname varchar2(100);
begin
xkey1 := xxXml_child_text(xPara,'key1');
xkey2 := xxXml_child_text(xPara,'key2');
xName := xxXml_child_text(xPara,'name');
xcur_ret :='<users><user><userId>1</userId><userName>Tom</userName></user><user><userId>2</userId><userName>Jos</userName></user></users>';
end xxSearch_member;
3,修改PO
@Entity
@Table(name="W_USER")
@NamedQuery(name="UserId.findAll", query="SELECT u FROM UserId u")
@NamedStoredProcedureQueries(value = {
@NamedStoredProcedureQuery(name="UserId.searchMember", procedureName = "TRAN_PROC.xxSearch_member",parameters = {
@StoredProcedureParameter(mode = ParameterMode.IN, type = String.class),
@StoredProcedureParameter(mode = ParameterMode.OUT, type = String.class) })
,
@NamedStoredProcedureQuery(name = "UserId.testPro", procedureName = "TRAN_PROC.testPro", parameters = {
@StoredProcedureParameter(mode = ParameterMode.IN, type = Integer.class),
@StoredProcedureParameter(mode = ParameterMode.OUT, type = Integer.class)
})
})
public class UserId implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private long id;
4,在repository里面增加
@Procedure(name="UserId.searchMember", procedureName = "TRAN_PROC.xxSearch_member")
String searchMember(String xPara);
@Procedure(name="UserId.testPro", procedureName = "TRAN_PROC.testPro")
Integer testPro(Integer x);
String searchMember(String xPara);
@Procedure(name="UserId.testPro", procedureName = "TRAN_PROC.testPro")
Integer testPro(Integer x);
5,service 增加方法,使用dom4j解析xml
public List<UserUI2> searchMember(String paras){
List<UserUI2> l=new ArrayList<UserUI2>();
String xml=this.repository.searchMember(paras);
Document document = null;
UserUI2 vo = null;
try {
document = DocumentHelper.parseText(xml);
Element root = document.getRootElement();//users
// iterate through child elements of root
for ( Iterator k = root.elementIterator(); k.hasNext(); ) {
Element element = (Element) k.next();//user
vo = new UserUI2();
for ( int i = 0, size = element.nodeCount(); i < size; i++ ) {
Node node = element.node(i);
if ( node instanceof Element ) {
Element e=( (Element) node );
if(e.getName().equals("userId"))
vo.setUserId(e.getTextTrim());
else if(e.getName().equals("userName")){
vo.setUserName(e.getTextTrim());
}
//this.logger.info("e.getText()="+e.getText()+" e.getStringValue()="+e.getStringValue()+" e.getName()="+e.getName());
}
}
l.add(vo);
}
} catch (Exception e) {
this.logger.error("Parse xml error:",e);
}
return l;
}
List<UserUI2> l=new ArrayList<UserUI2>();
String xml=this.repository.searchMember(paras);
Document document = null;
UserUI2 vo = null;
try {
document = DocumentHelper.parseText(xml);
Element root = document.getRootElement();//users
// iterate through child elements of root
for ( Iterator k = root.elementIterator(); k.hasNext(); ) {
Element element = (Element) k.next();//user
vo = new UserUI2();
for ( int i = 0, size = element.nodeCount(); i < size; i++ ) {
Node node = element.node(i);
if ( node instanceof Element ) {
Element e=( (Element) node );
if(e.getName().equals("userId"))
vo.setUserId(e.getTextTrim());
else if(e.getName().equals("userName")){
vo.setUserName(e.getTextTrim());
}
//this.logger.info("e.getText()="+e.getText()+" e.getStringValue()="+e.getStringValue()+" e.getName()="+e.getName());
}
}
l.add(vo);
}
} catch (Exception e) {
this.logger.error("Parse xml error:",e);
}
return l;
}
相关推荐
Spring Data JPA 提供了调用存储过程的能力,使得在Java应用中使用存储过程变得方便。 1. **存储过程** 存储过程是数据库中预编译的SQL语句集合,可以接受参数并返回结果。在本例中,我们有 `test_pkg` 包下的两个...
最后,Spring Data JPA也支持存储过程的调用,只需要在Repository接口上定义一个方法,并使用`@Procedure`注解。 通过阅读《Spring Data JPA从入门到精通》和《Spring Data JPA中文文档[1.4.3]》,读者将能全面了解...
7. **存储过程**:Spring Data JPA也支持调用数据库存储过程,并将其结果转换为Java对象。 8. **JPA实体**:学习如何定义实体类,使用`@Entity`, `@Table`, `@Id`, `@GeneratedValue`等注解,以及如何处理关系(如`...
在本项目中,我们主要探讨如何手动构建一个基于SpringMVC、Spring Data JPA、Hibernate以及FreeMarker模板引擎的Maven工程,同时实现环境切换功能。这个基础框架为日常开发工作提供了必要的支持。 首先,SpringMVC...
Spring Data JPA 是一个强大的框架,它简化了与Java Persistence API (JPA) 的交互,JPA 是Java 开发者用来管理和持久化应用程序数据的一种标准。在这个“Spring Data JPA Demo”项目中,我们将深入探讨如何利用...
4. 使用`@Procedure`和`@Function`注解来调用数据库中的存储过程和函数。 通过上面的介绍,我们了解到SpringDataJPA不但提高了代码的复用性,还降低了ORM框架切换的成本。如果项目需要更换底层的数据持久化框架,只...
**Spring Data JPA 简单案例** Spring Data JPA 是 Spring 框架的一个模块,它为使用 JPA(Java Persistence API)提供了强大的支持,简化了数据访问层的开发。通过使用 Spring Data JPA,我们可以避免编写大量重复...
**SpringBoot整合SpringData JPA** 是一个现代Java开发中的常见技术栈,它结合了Spring Boot的便捷性和Spring Data JPA的数据访问效率。Spring Boot简化了应用的初始搭建以及配置,而Spring Data JPA则是Spring ...
Spring Data JPA是Spring框架的一个模块,主要目的是简化Java企业级应用中数据访问层的开发。这个框架构建在JPA(Java Persistence API)之上,提供了一种声明式的方式来操作数据库,使得开发者无需编写大量的SQL...
Spring Data JPA是Spring生态系统中的一个重要组件,它为开发者提供了与JPA(Java Persistence API)交互的简化接口,极大地提高了数据访问的效率。本教程将深入探讨如何在Spring Boot项目中整合Spring Data JPA,...
Spring Data JPA 也支持调用数据库存储过程,通过 `@Procedure` 注解进行声明。 3.5. **事务性** JPA 存储库的方法默认是事务性的,可以根据需要配置事务边界。 3.6. **锁定** 支持乐观锁和悲观锁机制,以处理并发...
在现代Java Web开发中,"Maven整合Spring+SpringMVC+Hibernate+SpringDataJPA"是一个常见的架构组合,被广泛应用于构建企业级应用程序。这个组合通常被称为"SSM",其中"M"代表Maven,"S"代表Spring,包括Spring核心...
在本项目中,MySQL作为数据存储的平台,与Spring Data JPA 集成,实现了对数据的持久化管理。`credit-manager`可能包含了数据库模型的设计,如实体类(Entity),以及与这些实体对应的数据库表结构。 **最小化配置*...
**Spring Data JPA** 是一个由Spring框架提供的重要...同时,这也将是一个很好的起点,帮助你进一步探索和掌握Spring Data JPA的高级特性,如存储过程调用、自定义SQL查询、以及与其他Spring组件如Spring MVC的集成等。
Spring Data JPA是Spring框架的一个模块,用于简化Java Persistence API(JPA)的使用,它提供了数据访问的抽象层,让开发者能够以更简洁的方式与数据库进行交互。本入门例子将帮助你理解并掌握Spring Data JPA的...
在Java后端开发中,Spring框架提供了强大的事务管理能力,特别是在使用Spring Data JPA时,`@Transactional`注解使得事务处理变得简单易用。这个注解是Spring框架中的核心部分,它允许开发者声明性地控制事务边界,...
**Spring Data JPA 2.0 标准模板详解** Spring Data JPA 是 Spring 框架的一个子项目,它简化了数据访问层的开发,提供了对 Java Persistence API(JPA)的高度抽象和自动化。在 Spring Data JPA 2.0 版本中,它...
SpringDataJPA是Spring框架的一部分,它为Java开发者提供了便捷的数据访问层实现,尤其是在使用ORM(对象关系映射)框架如Hibernate时。本资源包包含了关于SpringDataJPA的详细配置和文档,旨在帮助你快速理解和应用...
Spring Data JPA是Spring框架的一个模块,它简化了Java应用程序对数据库的操作,通过提供自动的repository接口实现。在处理复杂的查询需求时,Spring Data JPA的`Specifications`接口提供了动态构建查询的能力,允许...