Mybatis调用存储过程以及视图

133 阅读1分钟
@Repository
public interface ProcedureMapper extends SimpleMapper<UserForm,User>{

    //存储过程
    Map<String, Object> testProcedure(Map<String, Object> paraMap);
    //视图
    List<Map<String, Object>> testView(Map<String, Object> paraMap);
}

mapper.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="cn.zsmy.mapper.ProcedureMapper" >

 <!-- 调用存储过程查询 -->
 <select id="testProcedure" parameterType="java.util.Map" statementType="CALLABLE" resultType="java.util.HashMap">  
      {call loginandreg(
                #{out_ret,mode=OUT,javaType=java.lang.Integer,jdbcType=INTEGER},
              #{out_desc,mode=OUT,javaType=java.lang.String,jdbcType=VARCHAR},
              #{userId,jdbcType=VARCHAR,mode=OUT},
              #{user_pwd,jdbcType=VARCHAR,mode=IN},
              #{nickname,jdbcType=VARCHAR,mode=IN}
          )
       }
  </select>
  
  <!-- 调用视图查询 -->
  <select id="testView" parameterType="java.util.Map" resultType="java.util.HashMap">
        select username, nickname, dept from test_view where user_type=#{userType}
  </select>
    
</mapper>

视图

DROP VIEW IF EXISTS `palm_2_0_16`.`test_view`;
CREATE VIEW `palm_2_0_16`.`test_view` 
    AS
SELECT u.username,u.nickname,d.dept, u.user_type FROM tb_user u, tb_doctor d WHERE d.id=u.id ;

注意:mapper.xml中where后面的参数条件一定是在视图中返回的,不然会报错。