mybatis 调用mysql存储过程_Java中使用Mybatis调用MySQL存储过程示例源码

需求

查询出当前用户在4张应征表中的部分字段。并且应征状态不等于3(应征失败)

存储过程脚本(含分页)create procedure myApplyList (

in apply_id varchar(50),

in startRecord int,

in pageSize int

)

select * from (

select

base.order_id as order_id,

base.creator_id as creator_id,

base.contact_name as contact_name,

base.order_type as order_type,

base.order_status as order_status,

base.order_title as order_title,

unix_timestamp(base.create_date) as create_date,

enq.user_id as applicant_id

from

base_order as base,

apply_1 as enq

where

base.order_id = enq.order_id and enq.`status` != 3 and enq.user_id=apply_id

union

select

base.order_id as order_id,

base.creator_id as creator_id,

base.contact_name as contact_name,

base.order_type as order_type,

base.order_status as order_status,

base.order_title as order_title,

unix_timestamp(base.create_date) as create_date,

oth.applicant_id as applicant_id

from

base_order as base,

apply_2 as oth

where

base.order_id = oth.order_id and oth.apply_state != 3 and oth.applicant_id=apply_id

union

select

base.order_id as order_id,

base.creator_id as creator_id,

base.contact_name as contact_name,

base.order_type as order_type,

base.order_status as order_status,

base.order_title as order_title,

unix_timestamp(base.create_date) as create_date,

adv.applicant_id as applicant_id

from

base_order as base,

apply_3 as adv

where

base.order_id = adv.order_id and adv.apply_state != 3 and adv.applicant_id=apply_id

union

select

base.order_id as order_id,

base.creator_id as creator_id,

base.contact_name as contact_name,

base.order_type as order_type,

base.order_status as order_status,

base.order_title as order_title,

unix_timestamp(base.create_date) as create_date,

coo.applicant_id as applicant_id

from

base_order as base,

apply_4 as coo

where

base.order_id = coo.order_id and coo.apply_state != 3 and coo.applicant_id=apply_id

) apply_All order by create_date desc limit startRecord, pageSize

-- 调用示例:call myApplyList('4c15c296-cb08-4811-84ad-58b5e0774001',0,20);

sql结果

bc7fdfc03a181785f939cc7c3cabcadc.gif

Mybatis代码调用

JavaBeanpublic class BaseOrderApplyList {

private String orderId;

private int orderType;

private int orderStatus;

private String orderTitle;

private Long createDate;

private String creatorId;

private String contactName;

// 省略getter/setter代码

}

XML映射<?xml  version="1.0" encoding="UTF-8" ?>

mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >

order_id, creator_id, contact_name, order_type, order_status, order_title, create_date

{

call myApplyList(

#{applyId, jdbcType=VARCHAR, mode=IN},

#{startRecord, jdbcType=INTEGER, mode=IN},

#{pageSize, jdbcType=INTEGER, mode=IN}

)

}

Mapper接口package com.wusong.firefly.dao.mysql.firefly;

import com.wusong.firefly.domain.firefly.BaseOrderApplyList;

import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface BaseOrderApplyListMapper {

/**

* 我的接单列表,包含所有类型订单,除了应征失败所有订单

* @param applyId

* @param startRecord

* @param pageSize

* @return

*/

List listBaseOrderByApplyId(@Param("applyId") String applyId, @Param("startRecord") Integer startRecord, @Param("pageSize") Integer pageSize);

}

service接口/**

* 我的接单列表

* @param applyId

* @param pageNo

* @param pageSize

* @return

*/

List listBaseOrderByApplyId(String applyId, Integer pageNo, Integer pageSize);

service接口实现类@Override

public List listBaseOrderByApplyId(String applyId, Integer pageNo, Integer pageSize) {

int startRecord = pageNo * pageSize;

return baseOrderApplyListMapper.listBaseOrderByApplyId(applyId, startRecord, pageSize);

}

其他步骤与普通的Controller调用相同,不做过多编写。主要关注点,在于xml的映射中,如何调用存储过程。List baseOrderApplyLists = baseOrderService.listBaseOrderByApplyId(userId, pageNo, pageSize);

相关阅读

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值