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

Posted guofen3399

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mybatis调用mysql的存储过程(procedure),实现查询操作(student表中的某个年级中的总人数 select 或者 select (*))相关的知识,希望对你有一定的参考价值。

step1:在mysql cmd中新建存储过程:

drop procedure if 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文件

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

 

 

 

 

step3:编写StudentManager.java 接口文件

//使用存储过程实现查询的操作
    void queryCountByGradeWithProcedure(Map<String,Object> mapp);

 

 

 

 

step4:测试函数

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

  

以上是关于mybatis调用mysql的存储过程(procedure),实现查询操作(student表中的某个年级中的总人数 select 或者 select (*))的主要内容,如果未能解决你的问题,请参考以下文章

MyBatis调用MySQL存储过程

12mybatis调用执行存储过程

mybatis怎么调用mysql数据库的存储过程

mybatis调用mysql存储过程返回多结果集(完整)

mybatis 调用mysql存储过程 带输出输入参数

MyBatis调用MySQL存储过程