当前位置:Gxlcms > 数据库问题 > mybatis调用mysql的存储过程(procedure),实现查询操作(student表中的某个年级中的总人数 select (1) 或者 select (*))

mybatis调用mysql的存储过程(procedure),实现查询操作(student表中的某个年级中的总人数 select (1) 或者 select (*))

时间:2021-07-01 10:21:17 帮助过:4人阅读

exists queryCountByGrade ; delimiter // -- 定义存储过程结束符号为// create procedure queryCountByGrade(IN gradenameinput INT(11),OUT counts int(11) begin select count(*) into counts from student where grade = gradenameinput;end // delimiter ; --重新定义存储过程的结束符号是分号

 

 

 

step2:编写StudentMapper.xml文件

  1. <!-- 通过mybatis调用存储过程procedure,来实现查询功能 ,statementType=<span style="color: #800000;">"</span><span style="color: #800000;">CALLABLE</span><span style="color: #800000;">"</span> -->
  2. <<span style="color: #0000ff;">select</span> id=<span style="color: #800000;">"</span><span style="color: #800000;">queryCountByGradeWithProcedure</span><span style="color: #800000;">"</span> statementType=<span style="color: #800000;">"</span><span style="color: #800000;">CALLABLE</span><span style="color: #800000;">"</span> parameterType=<span style="color: #800000;">"</span><span style="color: #800000;">HashMap</span><span style="color: #800000;">"</span>><span style="color: #000000;">
  3. CALL queryCountByGrade( #{gradenameinput,mode</span>=IN,jdbcType=VARCHAR}, #{counts,mode=OUT,jdbcType=<span style="color: #000000;">INTEGER} </span>
  1. <span> //queryCountByGrade:就是mysql存储过程名称</span>
  1. <span style="color: #000000;">) </span></<span style="color: #0000ff;">select</span>>

 

 

 

 

step3:编写StudentManager.java 接口文件

  1. <span style="color: #008000;">//</span><span style="color: #008000;">使用存储过程实现查询的操作</span>
  2. <span style="color: #0000ff;">void</span> queryCountByGradeWithProcedure(Map<String,Object> mapp);

 

 

 

 

step4:测试函数

  1. /**
  2. * 使用存储过程实现数量的查询,某个年级的人数
  3. * @param args
  4. * @throws IOException
  5. */
  6. /**
  7. * 带转换器
  8. * @throws IOException
  9. */
  10. public static void throughProcedureToQueryCountByGradeName() throws IOException
  11. {
  12. Reader reader = Resources.getResourceAsReader("conf.xml");
  13. SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
  14. SqlSession session = sessionFactory.openSession();//就是session名字即可
  15. StudentManager studentManager = session.getMapper(StudentManager.class);
  16. Map<String ,Object>mapp = new HashMap();//通过Map给存储过程,指定输入参数gradenameinput<br>         //gradenameinput和counts都是mysql中存储过程定义时候的,名称,跟CALL queryCountByGrade(#{},#{})里的是一致的
  17. mapp.put("gradenameinput", 5);//指定存储过程的出入参数gradenameinput,是5
  18. studentManager.queryCountByGradeWithProcedure(mapp);//调用存储过程
  19. Object obj = mapp.get("counts");//获取存储过程的输出参数:counts
  20. System.out.println(obj);
  21. session.close();
  22. }//queryonestudentwithconverser()

  

mybatis调用mysql的存储过程(procedure),实现查询操作(student表中的某个年级中的总人数 select (1) 或者 select (*))

标签:编写   exception   就是   param   into   sql   rop   nts   sele   

人气教程排行