Springmvc调用存储过程,并返回存储过程返还的数据方式

作者:weixin_39468112 时间:2022-07-24 20:10:44 

Springmvc调用存储过程,并返回存储过程返还的数据

java后端很多时候都需要和数据库进行交互,并返回业务数据。一般情况下都会采用执行SQL的方式来进行交互,但有些特别的场景时,也可以直接利用存储过程返回数据。

存储过程返回数据的好处是只需要一个调用,即可根据不同的参数返回不同的业务数据,这些业务数据有可能列名完全不一样。

实现如下

首先要先定义SqlMap.xml文件:


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd" >
<sqlMap namespace="YJSPGJ">
 <parameterMap id="yjspgj_test" class="java.util.Map">
  <parameter property="v_dxlx" jdbcType="VARCHAR" javaType="java.lang.String" mode="IN" />
  <parameter property="i_qsrq" jdbcType="VARCHAR" javaType="java.lang.String" mode="IN" />
 </parameterMap>
 <procedure id="yjspgj_test" resultClass="java.util.HashMap" remapResults="true" parameterMap="yjspgj_test">
  {call sp_test_returnmap(?,?)}
 </procedure>  
</sqlMap>

这里要重点说明一下

1、返回的resultClass="java.util.HashMap",一定要是HashMap,如果直接写Map的话会报错,因为Map是一个接口,不能对接口进行实例化,HashMap是一个类,可以进行实例化。

2、一定要加上remapResults="true",否则的话当存储过程返回的列不一致时,会导致系统报错。

定义基础类api:


public interface YjspgjService {
String KEY="yjspgj.YjspgjService";
public ResultCommon selectTest(Map<String,Object> map);
}

定义实现类service:


@Service(YjspgjService.KEY)
public class YjspgjServiceImpl extends SubService implements YjspgjService {

@Autowired
private YjspgjDao yjspgjDao;
public ResultCommon selectTest(Map<String, Object> map) {
 // TODO Auto-generated method stub
 ResultListData result=new ResultListData(PasCloudCode.SUCCESS);
 List listData=yjspgjDao.selectTest(map);
 result.setRows(listData);
 return result;
}
}

定义数据库操作类dao:


@Repository
public class YjspgjDao {
private static final Logger log = LoggerFactory.getLogger(YjspgjDao.class);
   @Autowired
   private IBaseDAO ibaseDAO;
   public List selectTest(Map<String,Object> map){
 String sqlKey="yjspgj_test";
 return (List)ibaseDAO.selectInfoByPara(sqlKey, map);    
   }
}

调用controller:


@Controller
@RequestMapping("/yjspgj")  
public class YjspgjController extends BaseController {
@Autowired
YjspgjService yjspgjService;
 private static Gson gson = new GsonBuilder().serializeNulls().create();//用于json格式的转化
@RequestMapping("/showData")
@ResponseBody
public void showData(HttpServletRequest request, HttpServletResponse response){
 Map<String,Object> map=new HashMap();
 setMap(map,request);//自行定义Map的值
 ResultListData rc= (ResultListData) yjspgjService.selectTest(map);
 List list=rc.getRows();
 for(int i=0;i<list.size();i++){
  try {
   response.getWriter().write(list.get(i).toString()+"\n");
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 }
}

@Override
protected Class setClass() {
 // TODO Auto-generated method stub
 return this.getClass();
}
}

Springmvc调用存储过程,entity文件写法


<!--广告任务申请,被审核通过-->
<select id="approveAdTask" statementType="CALLABLE" parameterType="java.util.Map">
{call approveAdTask(
#{sn,mode=IN,jdbcType=VARCHAR}
,#{ssn,mode=IN,jdbcType=VARCHAR}
,#{psn,mode=IN,jdbcType=VARCHAR}
,#{sname,mode=IN,jdbcType=VARCHAR})}
</select>

来源:https://blog.csdn.net/weixin_39468112/article/details/79305565

标签:Springmvc,调用,存储过程,返还数据
0
投稿

猜你喜欢

  • java中Class.forName方法的作用详解

    2021-07-08 21:47:31
  • 通过java反射机制动态调用某方法的总结(推荐)

    2022-11-04 01:38:32
  • spring aop execution表达式的用法

    2023-08-22 05:39:24
  • struts2的国际化实现网站整体中英文切换实例代码

    2023-08-31 02:37:40
  • Spring boot外部配置(配置中心化)详解

    2022-07-11 23:13:26
  • Kotlin标准函数与静态方法应用详解

    2022-01-21 10:45:33
  • SpringBoot自定义maven-plugin插件整合asm代码插桩

    2021-05-24 02:15:49
  • 使用java实现各种数据统计图(柱形图,饼图,折线图)

    2022-03-09 22:12:50
  • Java字节与字符流永久存储json数据

    2022-12-27 21:10:13
  • WinForm实现自定义右下角提示效果的方法

    2023-01-19 08:19:57
  • 浅谈Java基准性能测试之JMH

    2023-01-25 13:17:40
  • java 进制转换实例详解

    2023-07-05 11:53:45
  • C#先判断是否存在再创建文件夹或文件与递归计算文件夹大小

    2023-07-29 00:04:58
  • Java并发编程之阻塞队列详解

    2022-06-20 02:08:19
  • 解决Android屏幕四周闪现红框的问题

    2023-09-03 19:17:01
  • Spring Boot整合mybatis并自动生成mapper和实体实例解析

    2022-01-28 20:00:02
  • java如何从不规则的字符串中截取出日期

    2022-05-28 02:33:58
  • VC++时钟函数

    2021-06-17 10:07:51
  • C++中的String的常用函数用法

    2023-03-26 17:52:45
  • 深入解析Java的设计模式编程中的模板方法模式

    2023-11-01 13:31:14
  • asp之家 软件编程 m.aspxhome.com