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