jpa对存储过程的调用

来源:互联网 发布:西门子828d编程实例 编辑:程序博客网 时间:2024/05/07 14:36

第一;直接查表(不带参)

mysql 存储过程:

mysql> delimiter
mysql> create procedure sp_show()
    -> begin
    -> select * from user;
    -> end;
Database changed


jpa调用:

@Test
 public void testprocedure()throws Exception {
 EntityManager em=this.getEmf().createEntityManager();

 
 Query query = em.createNativeQuery("{call sp_show()}",User.class);
 List<User> result=query.getResultList();
 for(int i=0;i<result.size();i++)
 {
  User user=result.get(i);
  System.out.print(user.getEmail());
 }
 em.close();
 }


2。带参的查询(单值)

存储过程:

mysql> delimiter
mysql> create procedure finby_id(IN Uid integer(11))
    -> begin
    -> select * from user where id=Uid;
    -> end;
Database changed


jpa调用:

@Test
 public void testprocedurefind()throws Exception {
 EntityManager em=this.getEmf().createEntityManager();

 
 Query query = em.createNativeQuery("{call finby_id(?)}",User.class);
 query.setParameter(1,30);
 User result=(User) query.getSingleResult();
 
  System.out.print(result.getEmail());
 em.close();
 }
 

3.带参查询之多值

存储过程:

mysql> delimiter
mysql> create procedure linktable(in Uid integer(11))
    -> begin
    -> select * from news where user_id=Uid;
    -> end;
Database changed


jpa调用:

@Test
 public void testprocedurefind()throws Exception {
 EntityManager em=this.getEmf().createEntityManager();

 
 Query query = em.createNativeQuery("{call finby_id(?)}",User.class);
 query.setParameter(1,30);
 User result=(User) query.getSingleResult();
 
  System.out.print(result.getEmail());
 em.close();
 
 }
 



 



0 0
原创粉丝点击