当前位置: 首页 > news >正文

MyBatis学习总结(六)

调用存储过程

一、提出需求

查询得到的男生或女生的数量,如果传入的是0就是女生,否则就是男生。

二、准备数据库表和存储过程

create table p_user(  id int primary key auto_increment,  name varchar(10),sex char(2)); insert into p_user(name,sex) values('A',"男");  insert into p_user(name,sex) values('B',"女");  insert into p_user(name,sex) values('C',"男");  -- 创建存储过程(查询得到男生或女生的数量, 如果传入的是0就女生否则是男生)DELIMITER $CREATE PROCEDURE mybatis.ges_user_count(IN sex_id INT, OUT user_count INT)BEGIN  IF sex_id=0 THENSELECT COUNT(*) FROM mybatis.p_user WHERE p_user.sex='女' INTO user_count;ELSESELECT COUNT(*) FROM mybatis.p_user WHERE p_user.sex='男' INTO user_count;END IF;END $-- 调用存储过程DELIMITER ;SET @user_count = 0;CALL mybatis.ges_user_count(1, @user_count);SELECT @user_count;

三、编辑userMapper.xml

编辑userMapper.xml文件,添加如下的配置项。

 <!-- 查询得到男生或女生的数量, 如果传入的是0就是女生否则是男生--><select id="getUserCount" parameterMap="getUserCountMap" statementType="CALLABLE">CALL mybatis.ges_user_count(?,?)</select><!--parameterMap.put("sexid", 0);parameterMap.put("usercount", -1);--><parameterMap type="java.util.Map" id="getUserCountMap"><parameter property="sexid" mode="IN" jdbcType="INTEGER"/><parameter property="usercount" mode="OUT" jdbcType="INTEGER"/></parameterMap>

四、编写单元测试代码

package me.gacl.test;import java.util.HashMap;import java.util.List;import java.util.Map;import me.gacl.custom.model.ConditionUser;import me.gacl.domain.User;import me.gacl.util.MyBatisUtil;import org.apache.ibatis.session.SqlSession;import org.junit.Test;/*** @author gacl* 测试调用存储过程*/public class Test6 {@Testpublic void testGetUserCount(){SqlSession sqlSession = MyBatisUtil.getSqlSession();/*** 映射sql的标识字符串,* me.gacl.mapping.userMapper是userMapper.xml文件中mapper标签的namespace属性的值,* getUserCount是select标签的id属性值,通过select标签的id属性值就可以找到要执行的SQL*/String statement = "me.gacl.mapping.userMapper.getUserCount";//映射sql的标识字符串Map<String, Integer> parameterMap = new HashMap<String, Integer>();parameterMap.put("sexid", 1);parameterMap.put("usercount", -1);sqlSession.selectOne(statement, parameterMap);Integer result = parameterMap.get("usercount");System.out.println(result);sqlSession.close();}}
http://www.dtcms.com/a/331923.html

相关文章:

  • 【面板数据】各省及市省级非物质文化遗产数据合集(2005-2024年)
  • 《嵌入式 C 语言编码规范与工程实践个人笔记》参考华为C语言规范标准
  • 解锁 Docker:一场从入门到源码的趣味解谜之旅
  • 卸载python遇到msi文件权限不足
  • Python闭包详解:理解闭包与可变类型和不可变类型的关系
  • 新手如何高效运营亚马逊跨境电商:从传统SP广告到DeepBI智能策略
  • docker 容器管理入门教程
  • 身份全景图
  • Encoder-Decoder Model编码器-解码器模型
  • 【学习笔记】Java并发编程的艺术——第4章 Java并发编程基础
  • CMake笔记:Alias Target在哪些地方可以使用
  • 傅里叶变换+attention机制,深耕深度学习领域
  • shellgpt
  • Linux计划任务
  • 当GitHub宕机时,我们如何协作?
  • nginx入门需知(含安装教程)
  • OpenCV图像注册模块
  • Spring 三级缓存三个小问题记录
  • linux常见文件系统+用户管理+常见故障
  • Redis面试精讲 Day 21:Redis缓存穿透、击穿、雪崩解决方案
  • 纸箱拆垛:物流自动化中的“开箱密码”与3D视觉的智能革命
  • JavaScript方法借用技术详解
  • 【软件安装|1】CentOS7最新可用国内 yum 镜像源配置和Linux版MySQL8.0安装及其相关知识
  • 6、C 语言指针初阶知识点总结
  • 金融新政激活工业“智脑”,鸿道操作系统筑基新型工业化
  • 70亿参数让机器人“开窍“:英伟达Cosmos Reason如何让AI理解物理世界
  • 批量标准化、模型的保存和加载
  • 20道DOM相关前端面试题
  • CLAM复现问题记录
  • flutter3.7.12版本设置TextField的contextMenuBuilder的文字颜色