第一;直接查表(不带参)
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();
}