ssm框架如何调用mysql存储过程

 更新时间:2024年05月06日 11:10:24   作者:cultivator129480  
这篇文章主要介绍了ssm框架如何调用mysql存储过程,首先是建表,创建存储过程,本文结合示例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧

1.建表

/*
Navicat MySQL Data Transfer
Source Server         : localMysql
Source Server Version : 50628
Source Host           : 127.0.0.1:3306
Source Database       : testmysql
Target Server Type    : MYSQL
Target Server Version : 50628
File Encoding         : 65001
Date: 2017-06-19 09:29:34
*/
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for t_user
-- ----------------------------
DROP TABLE IF EXISTS `t_user`;
CREATE TABLE `t_user` (
  `id` bigint(11) NOT NULL AUTO_INCREMENT,
  `user_name` varchar(255) DEFAULT NULL COMMENT '用户名',
  `user_phone` varchar(20) DEFAULT NULL COMMENT '手机号',
  `user_email` varchar(255) DEFAULT NULL COMMENT '邮箱地址',
  `user_pwd` varchar(32) DEFAULT NULL COMMENT '加盐后用户密码',
  `pwd_salt` varchar(6) DEFAULT NULL COMMENT 'MD5盐',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `modify_time` datetime DEFAULT NULL COMMENT '最后修改时间',
  `is_delete` tinyint(4) DEFAULT NULL COMMENT '是否删除,0-未删除;1-已删除',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COMMENT='用户登录表';
-- ----------------------------
-- Records of t_user
-- ----------------------------
INSERT INTO `t_user` VALUES ('1', '子了a', '13285250574', '1045221654@qq.com', '05126a423a9379d529e4ee61a212fa55', 'KJUYT5', '2016-07-15 23:38:56', '2016-07-15 23:39:09', '0');
INSERT INTO `t_user` VALUES ('2', 'bbbb', '159852505743', '1198224554@qq.com', '98bd3a1bebde01ad363d3c5a0d1e56da', '656JHU', '2016-07-15 23:39:01', '2016-07-15 23:39:13', '0');
INSERT INTO `t_user` VALUES ('3', '王尼玛', '13685250574', '1256221654@qq.com', '5470db9b63c354f6c8d628b80ae2f3c3', '89UIKQ', '2016-07-15 23:39:05', '2016-07-15 23:39:16', '0');

2.创建存储过程

CREATE DEFINER=`root`@`localhost` PROCEDURE `UPDATE_USER`(IN `in_id` integer,IN `in_user_name` varchar(20),OUT `out_user_phone` varchar(20))
BEGIN
update t_user set user_name = in_user_name WHERE t_user.id = in_id;  
  select user_phone INTO out_user_phone from t_user where id = in_id;  

3.service调用

package cn.demo.service;
import cn.demo.dao.AccountDao;
import cn.demo.model.Account;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import static junit.framework.TestCase.assertEquals;
/**
 * Created by Administrator on 2017/3/22.
 */
@RunWith(SpringJUnit4ClassRunner.class)
//这个是用来加载写好的配置文件,传入的值是数组形式多个配置文件如下 {"····","·······"}
@ContextConfiguration({"classpath:spring/spring-dao-config.xml"})
public class AccountServiceTest {
    @Autowired
    private AccountDao accountDao;
//    @Test
    public void getAllAccount() throws Exception {
        List<Account> accountList = accountDao.getAllAccount();
        System.out.println("accountList=" + accountList.toString());
    }
    @Test
    public void testGetNamesAndItems() {
        Map<String, Object> parms = new HashMap<String, Object>();
        parms.put("in_id", 1);
        parms.put("in_user_name", "子了");
        parms.put("out_user_phone", new String());
        accountDao.updateUser(parms);
        assertEquals("13285250574", parms.get("out_user_phone"));
    }
}

4.dao层

package cn.demo.dao;
/**
 * Created by chengcheng on 2017/6/2 0002.
 */
import cn.demo.model.Account;
import org.springframework.stereotype.Repository;
import java.util.List;
import java.util.Map;
/**
 * Created by Administrator on 2017/3/22.
 */
@Repository
public interface AccountDao {
    String updateUser(Map<String, Object> parms);
}

5.xml文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.demo.dao.AccountDao">
    <select id ="updateUser" parameterType= "map" statementType="CALLABLE" >
        <!--注明statementType="CALLABLE"表示调用存储过程-->
        {call UPDATE_USER(
        #{in_id, jdbcType=INTEGER, mode=IN},
        #{in_user_name, jdbcType= VARCHAR, mode=IN},
        #{out_user_phone, mode=OUT, jdbcType= VARCHAR}
        )}
        <!--传入传出参数要注明mode=IN/OUT 并要注明jdbcType(在网上可以查询mybatis支持哪些jdbcType类型),返回参数要注明对应的resultMap-->
    </select >
</mapper>

6.接下来运行junit就可以了

如果是在直接在应用中使用,把juinit内容直接放入service就可以了

到此这篇关于ssm框架调用mysql存储过程的文章就介绍到这了,更多相关ssm框架mysql存储过程内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Linux中更改转移mysql数据库目录的步骤

    Linux中更改转移mysql数据库目录的步骤

    前几天发现由于MySQL的数据库太大,默认安装的/var盘已经再也无法容纳新增加的数据,只能想办法转移数据的目录。网上有很多相关的文章写到转移数据库目录的文章,但转载的过程中还会有一些错误,因为大部分人根本就没测试过,这篇文章是本文测试过整理好后分享给大家。
    2016-11-11
  • MySQL慢日志实践小结

    MySQL慢日志实践小结

    这篇文章主要介绍了MySQL慢日志实践小结,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-01-01
  • mysql left join的基本用法以及on与where的区别

    mysql left join的基本用法以及on与where的区别

    我们在写sql语句的时候,总是无法避免使用到连接关键词,比如内连接、外连接,下面就是详细的介绍,需要的朋友可以参考下
    2023-05-05
  • 彻底解决MySQL使用中文乱码的方法

    彻底解决MySQL使用中文乱码的方法

    本文详细讲解了彻底解决MySQL使用中文乱码的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-01-01
  • MySQL 各个索引的使用详解

    MySQL 各个索引的使用详解

    这篇文章主要介绍了MySQL 各个索引的使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • 增删改查sql语法基础教程

    增删改查sql语法基础教程

    为了准备面试,整理了一些SQL基本语句和自己的理解,作为备份,下面这篇文章主要给大家介绍了关于增删改查sql语法基础教程的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-02-02
  • MySQL中使用自定义变量 编写偷懒的UNION示例

    MySQL中使用自定义变量 编写偷懒的UNION示例

    以下是对MySQL中使用自定义变量,编写一个UNION的示例进行了详细的介绍,需要的朋友可以过来参考下
    2013-07-07
  • mysql中is null语句的用法分享

    mysql中is null语句的用法分享

    对null的特殊处理即是在前面的章节中,为了决定哪个动物不再是活着的,使用death is not null而不使用death != null的原 因
    2011-05-05
  • 将旧版MySQL替换为8.0及以上版本保姆级教学

    将旧版MySQL替换为8.0及以上版本保姆级教学

    在部署项目的时候MySQL就会报错,这个时候就要换MySQL的版本了,这篇文章主要给大家介绍了关于将旧版MySQL替换为8.0及以上版本的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2024-05-05
  • ERROR 2002 (HY000): Can''t connect to local MySQL server through socket ''/tmp/mysql.sock''

    ERROR 2002 (HY000): Can''t connect to local MySQL server thr

    mysql 支持 socket 和 TCP/IP 连接。那么 mysql.sock 这个文件有什么用呢?本文给大家介绍的非常详细,需要的朋友参考下吧
    2019-11-11

最新评论