1. 程式人生 > >ssm框架呼叫mysql儲存過程

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', '
[email protected]
', '05126a423a9379d529e4ee61a212fa55', 'KJUYT5', '2016-07-15 23:38:56', '2016-07-15 23:39:09', '0'); INSERT INTO `t_user` VALUES ('2', 'bbbb', '159852505743', '[email protected]', '98bd3a1bebde01ad363d3c5a0d1e56da', '656JHU', '2016-07-15 23:39:01', '2016-07-15 23:39:13', '0'); INSERT INTO `t_user` VALUES ('3', '王尼瑪', '13685250574', '
[email protected]
', '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;  

END

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儲存過程

1.建表 /* Navicat MySQL Data Transfer Source Server : localMysql Source Server Version : 50628 Source Host : 127.0.0.1:

spring data jpa 如何呼叫mysql儲存過程

  A:首先定義儲存過程依賴的jpa表:     @Entity     @Table(name="evenmngt_childthingtree_tmp")//資料庫中的表名     @Name

jdbc呼叫mysql儲存過程

public static void updateMtBeginTimeIsSix() { Connection connection = null; CallableStatement cs = null; try { connection = DataSource.getI

mybaties呼叫mysql儲存過程儲存過程返回多個select結果集。

先看需求,直接上圖 從圖中看出,需要12條普通的SELECT語句,所以就放到儲存過程中 儲存過程如下: DROP PROCEDURE IF EXISTS proc_report; DELIMITER $ CREATE PROCEDURE proc_report( OUT d_norma

使用JDBC呼叫mysql儲存過程

多敲幾次java連線mysql,多操作一些簡單的例項,多看大神們的部落格很快就能掌握好java對資料庫的操作了。 程式碼: public static void procedure() throws ClassNotFoundException, SQLException{

python 呼叫mysql儲存過程返回結果集

儲存過程: delimiter | create procedure get_product_info(in imid int(10),int iuser varchar(20)) begin select * from tb_test where mid = i

JFinal呼叫Mysql儲存過程方法

1.首先要清楚JFinal提供了Db+Record的模式,而其中有一個方法是這樣的Db.execute(ICallback),。 2.ICallback是JFinal提供的呼叫儲存過程的介面,介面中提供了run方法,用來實現儲存過程的呼叫。 簡單描述程式碼過程 (1)我在s

【Java】如何呼叫MySQL儲存過程

Java呼叫MySQL的儲存過程,需要用JDBC連線,環境eclipse 首先檢視MySQL中的資料庫的儲存過程,接著編寫程式碼呼叫 mysql> show procedure status; +------+-------------+-----------+-

shell 指令碼呼叫mysql儲存過程

#!/bin/sh ## The function of the script is used to balance statistics,we get ## data from the table accseqs,after the analysis and cal

c / c + + 呼叫mysql儲存過程

E文好的請檢視原文,菜鳥級翻譯,歡迎批評指正! mysql5.0支援儲存過程後,現在mysql6.0Alpha 版本也是可用的。6.0不僅支援大型資料庫(如 oracle和如此的大多數功能(如儲存過程、檢視、觸發器、作業等,並修復了這些功能存在的bug,6.0.1 版

mybatis呼叫mysql儲存過程返回結果集

儲存過程中經常需要返回結果集。Mysql中直接用select即可返回結果集。而oracle則需要使用遊標來返回結果集。這一點Mysql相對比較方便,如下程式碼即可實現輸出結果集: 儲存過程定義: D

SSM-Mybatis呼叫Oracle儲存過程返回結果集(遊標)示例

1.建立一個包 此處建立一個包,是為了建立儲存過程時,用遊標作為out輸出引數時宣告為遊標型別用的. --建立一個包 create or replace package types as type empListCursor is ref cursor

Spring mvc呼叫mysql儲存過程

mysql> use modbus; Database changed mysql> DELIMITER $ mysql> drop procedure if exists p4;     -> create procedure p4()     -

jdbc呼叫mysql儲存過程,並獲得結果集合

最近碰到一個需要Java呼叫mysql儲存過程並獲得儲存過程結果集的場景. 儲存過程:spilte_result:分割字串儲存到臨時表,並返回臨時表的結果 資料庫執行結果 sum_interface_traffic_result:統計策略流量 現在使用JdbcTempl

mybatis呼叫mysql儲存過程(返回引數,單結果集,多結果集)

一、接收一個返回值 使用Map接收返回引數,output引數放在傳入的param中 建立表 DROP TABLE IF EXISTS `demo`; CREATE TABLE `demo` ( `id` int(11) NOT NULL AUTO_INCREMEN

MySql儲存過程中傳參和不傳參以及java中呼叫程式碼

資料庫表結構 1.mysql不傳參寫儲存過程 create procedure product() -- product為儲存過程名稱 begin select * from book; end 呼叫此儲存過程為 CALL product

mysql 儲存過程建立及呼叫

返回(查詢users表的條數 + 傳入的數字) CREATE DEFINER=`root`@`localhost` PROCEDURE `getcount`(OUT s INT, IN t INT) BEGIN SET @t = (SELECT COUNT(1) FROM users);

MySQL 儲存過程相互呼叫舉例

create procedure prccharges(in orderno char(6),out shippingCharges float(4,2),out wrapCharges float(4,2)) begin select mshippingc

MySQL儲存過程遞迴呼叫

          有分類表tb_system_category,結構如下: CREATE TABLE `tb_system_category` ( `id` int(11) NOT NULL AUTO_INCREMENT, `c_parent_id` int(1

MySQL儲存過程和自定義函式、Navicat for mysql、建立儲存過程和函式、呼叫儲存過程和函式的區別

與你相遇 好幸運  可我已失去為你淚流滿面的權利  但願在我看不到的天際  你張開了雙翼 1 MySQL儲存過程和函式 過程和函式,它們被編譯後儲存在資料庫中,稱為永續性儲存模組(Persistent Stored Module,PSM),可以反覆呼叫,執行速度快。 1.1 儲存過程 儲存過程是由