关闭

jpa对存储过程的调用

1999人阅读 评论(0) 收藏 举报

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

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

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:51714次
    • 积分:1093
    • 等级:
    • 排名:千里之外
    • 原创:62篇
    • 转载:0篇
    • 译文:0篇
    • 评论:5条
    最新评论