zoukankan      html  css  js  c++  java
  • mybatis调用mysql存储过程

    返回类似 select *from 的做法
    过程:
    create procedure selectAll()
    BEGIN
    select * from user;
    end

    xml配置:
    <select id="selectall" resultType="map" statementType="CALLABLE">
    {call selectAll()}
    </select>

    java配置:
    //service层调用
    List<Map<String, Object>> ss = accountMapper.selectall();
    //DAO调用
    public List<Map<String,Object>> selectall();

    Sql代码
    -- --------------------------------------------------------------------------------
    -- Routine DDL
    -- Note: comments before and after the routine body will not be stored by the server
    -- --------------------------------------------------------------------------------
    DELIMITER $$

    CREATE DEFINER=`root`@`localhost` PROCEDURE `selectCount`(
    IN pcsId int,
    IN drId int,
    IN partnerId int,
    IN customerId int,
    OUT pcsCount int,
    OUT drCount int

    )
    BEGIN

    select count(md.id) into @pcsC from mdm_device md
    left join mdm_device_security mds on mds.device_id = md.id
    where mds.device_rooted = pcsId
    and md.partner_id = partnerId and md.customer_id = customerId;
    set pcsCount = @pcsC;


    select count(md.id) into @drC from mdm_device md
    where md.managed_status = drId and DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(md.un_manage_date)
    and md.partner_id = partnerId and md.customer_id = customerId;
    set drCount = @drC;



    END


    1.java调用传入MAP。获取通过MAP获取。
    1.1 mapper文件写法
    Xml代码
    <parameterMap type="map" id="homeVO">
    <parameter property="pcsId" jdbcType="INTEGER" mode="IN"/>
    <parameter property="drId" jdbcType="INTEGER" mode="IN"/>
    <parameter property="partnerId" jdbcType="INTEGER" mode="IN"/>
    <parameter property="customerId" jdbcType="INTEGER" mode="IN"/>
    <parameter property="pcsCount" jdbcType="INTEGER" mode="OUT"/>
    <parameter property="drCount" jdbcType="INTEGER" mode="OUT"/>
    </parameterMap>
    <select id="selectForHome" parameterMap="homeVO"
    statementType="CALLABLE">
    {call selectCount(
    ?,?,?,?,?,?
    )}
    </select>
    1.2 java调用写法
    Java代码
    @Override
    public StringselectHomeCount(HomeVO home) throws Exception {
    Map<String, Object> map = new HashMap<String, Object>();
    map.put("pscId", 0);
    map.put("drId", 1);
    map.put("partnerId", 25);
    map.put("customerId", 50);
    map.put("isolation", 1);
    selectOne("Mapper.selectForHome", map);
    System.out.println(map.get("pcsCount"));

    return map.get("drCount");
    }

  • 相关阅读:
    【模板】Sparse-Table
    UVa 11235 Frequent values
    【模板】树状数组
    UVa 1428 Ping pong
    数学技巧
    UVa 11300 Spreading the Wealth
    UVa 11729 Commando War
    UVa 11292 Dragon of Loowater
    POJ 3627 Bookshelf
    POJ 1056 IMMEDIATE DECODABILITY
  • 原文地址:https://www.cnblogs.com/sanhuan/p/4205238.html
Copyright © 2011-2022 走看看