MyBatis调用MySQL存储过程实例

1、编写存储过程:

CREATE DEFINER=`root`@`%` PROCEDURE `selectData`()
BEGIN
	select * from card ;
END

2、card表结构:

 3、Mybatis的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="com.ex.merget.dao.QueryDataDao">
    <resultMap id="cardMap" type="com.ex.merget.model.Card"> 
        <id column="OBJECT_ID" property="objectId" jdbcType="INTEGER"/> 
        <id column="CARD_ID" property="cardId" jdbcType="VARCHAR"/>
        <id column="CARD_NAME" property="cardName" jdbcType="INTEGER"/>
    </resultMap>
    <select id="getData2" resultMap="cardMap">
        {call selectData()}
    </select>
</mapper>

这里的call 后面跟的就是存储过程的名字。

4、实体类:

import lombok.Data;

@Data
public class Card {
    private Integer objectId;
    private String cardId;
    private String cardName;
}

5、mapper文件:

import com.ex.merget.model.Card;
import org.apache.ibatis.annotations.*;

import java.util.List;

@Mapper
public interface QueryDataDao {
    /**
     * 根据cardId 查询数据
     * @return
     */
    List<Card> getData2();

}

注解的方式,不需要配置xml:

import com.ex.merget.model.Card;
import org.apache.ibatis.annotations.*;

import java.util.List;

@Mapper
public interface QueryDataDao        
     @Results(id = "selectList", value = {
            @Result(column = "OBJECT_ID", property = "objectId"),
            @Result(column = "CARD_ID", property = "cardId"),
            @Result(column = "CARD_NAME", property = "cardName")
    })
    @Select("{call selectData()}")
    @Options(statementType = StatementType.CALLABLE)
    List<Card> getData3();
}

然后就是正常的注入mapper,server方法中调用就可以了。

展示一下结果:


版权声明:本文为qq_42251944原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。