返回顶部
首页 > 资讯 > 后端开发 > Python >Springmvc调用存储过程,并返回存储过程返还的数据方式
  • 193
分享到

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

2024-04-02 19:04:59 193人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

目录springMVC调用存储过程,并返回存储过程返还的数据实现如下这里要重点说明一下springmvc调用存储过程,entity文件写法Springmvc调用存储过程,并返回存储过

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>

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: Springmvc调用存储过程,并返回存储过程返还的数据方式

本文链接: https://lsjlt.com/news/157029.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作