1. 程式人生 > >mysql-mybatis 儲存過程-分頁查詢

mysql-mybatis 儲存過程-分頁查詢

1.建立表

 CREATE TABLE EASYBUY_PRODUCT
(
  `ep_id`          INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT COMMENT '自動編號(標識列),主鍵',
  `ep_name`        VARCHAR(30) NOT NULL COMMENT  '商品名字',
  `ep_description` VARCHAR(150) COMMENT '商品描述',
  `ep_price`       DECIMAL(10,2)  NOT NULL COMMENT '商品價格',
  `ep_stoc`        INTEGER NOT NULL COMMENT '商品庫存',
  `epc_id`         INTEGER NOT NULL COMMENT '所屬分類ID',
  `epc_child_id`   INTEGER COMMENT '所屬二級分類ID',
  `ep_file_name`   VARCHAR(200) NOT NULL COMMENT '上傳的檔名',
)ENGINE=INNODB AUTO_INCREMENT=61 DEFAULT CHARSET=utf8 COMMENT='商品表(easybuy_product):存放商品基本資訊';

2.插入語句

INSERT INTO EASYBUY_PRODUCT (`ep_id`, `ep_name`, `ep_description`, `ep_price`, `ep_stoc`, `epc_id`, `epc_child_id`, `ep_file_name`)
VALUES (19, '學生純棉短袖t恤', '男士夏裝青春學生純棉短袖t恤修身上衣服青少年日系潮半截袖男裝 ', 17, 157, 1, NULL, 'yf3.jpg');
INSERT INTO EASYBUY_PRODUCT (`ep_id`, `ep_name`, `ep_description`, `ep_price`, `ep_stoc`, `epc_id`, `epc_child_id`, `ep_file_name`)
VALUES (20, '印花體恤衫', '緊身t恤男韓版圓領個性印花體恤衫薄款修身潮流男士短袖t桖血衣服', 49, 77, 1, NULL, 'yf4.jpg');
INSERT INTO EASYBUY_PRODUCT (`ep_id`, `ep_name`, `ep_description`, `ep_price`, `ep_stoc`, `epc_id`, `epc_child_id`, `ep_file_name`)
VALUES (26, '韓國高腰短款上衣', '韓國高腰短款上衣服女士超短裝顯瘦露臍T恤夏漏肚臍潮女短袖寬鬆 ', 20, 77, 2, NULL, 'ny3.jpg');

INSERT INTO EASYBUY_PRODUCT (`ep_id`, `ep_name`, `ep_description`, `ep_price`, `ep_stoc`, `epc_id`, `epc_child_id`, `ep_file_name`)

3.建立儲存過程

DELIMITER;
DROP PROCEDURE IF EXISTS
`u_product`;
CREATE  PROCEDURE `u_product`(IN `in_start` INTEGER,IN `in_end` INTEGER,
OUT `out_ep_id` INTEGER,OUT `out_ep_name` VARCHAR(30),OUT

`out_ep_description` VARCHAR(150),
OUT `out_ep_price` DECIMAL(10,2),OUT `out_ep_stoc` INTEGER,OUT `out_epc_id` INTEGER,
OUT `out_epc_child_id` INTEGER,OUT `out_ep_file_name`  VARCHAR(200))
BEGIN 
IF in_start < 0 THEN
SET
in_start = 1;
END IF;
IF in_end < 1 THEN
SET
in_end = 10 ;
END IF;
SET
@pro=CONCAT('SELECT * FROM EASYBUY_PRODUCT  ORDER BY ep_id LIMIT ',in_start ,',',in_end);
PREPARE prods FROM @pro; -- 得到prepare prods
EXECUTE prods;                -- 執行select 
DEALLOCATE PREPARE prods;
END;

4.xml配置sql語句

<!-- 儲存過程 -->   statementType="CALLABLE" 這句必須加上,呼叫儲存過程
 <select id="findProductByPage" parameterType="hashmap" resultMap="ProductResult" statementType="CALLABLE">
 {call u_product(
 #{in_start,jdbcType=VARCHAR,mode=IN},
 #{in_end,jdbcType=VARCHAR,mode=IN},
 #{out_ep_id,jdbcType=INTEGER,mode=OUT},
 #{out_ep_name,jdbcType=VARCHAR,mode=OUT},
 #{out_ep_description,jdbcType=VARCHAR,mode=OUT},
 #{out_ep_price,jdbcType=DECIMAL,mode=OUT},
 #{out_ep_stoc,jdbcType=INTEGER,mode=OUT},
 #{out_epc_id,jdbcType=INTEGER,mode=OUT},
 #{out_epc_child_id,jdbcType=INTEGER,mode=OUT},
 #{out_ep_file_name,jdbcType=VARCHAR,mode=OUT}
 )}
 </select>