1、编写存储过程:
- CREATE DEFINER=`root`@`%` PROCEDURE `selectData`()
- BEGIN
- select * from card ;
- END
2、card表结构:

3、Mybatis的xml文件语句:
- 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
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
getData3(); - }
然后就是正常的注入mapper,server方法中调用就可以了。
展示一下结果:
