昨天在项目经理那里得到了一个需求,所有业务逻辑都写在存储过程里面。
理由是:
1.以后出现业务上的变更,直接修改存储过程,而不用动项目。
2.在java中做业务逻辑判断需要与数据库交互多次,而用存储过程则可减少至一次,而且好的存储过程,执行效率高。
但是我个人觉得如果用存储功能,那就于数据库的依赖就太强了,提高了项目与数据库之间的耦合度,如果项目一旦换了数据库,那所有存储过程将重写。我层看过一个项目,所有的业务逻辑都用存储过程代替,包括登录校验返回的提示信息。
好像有点跑题了,言归正传:
mybatis3.0调用oracle存储过程,这里只说应该注意的,
<select id="isMember" statementType="CALLABLE" parameterType="com.sf.emp.web.services.InterfaceEntity">
{call emp_is_member.emp_isMember(#{mobileNumber,mode=IN,jdbcType=DECIMAL},#{mobileUserId,mode=OUT,jdbcType=DECIMAL},#{yys,mode=OUT,jdbcType=DECIMAL},#{areaId,mode=OUT,jdbcType=DECIMAL},#{memberGrade,mode=OUT,jdbcType=DECIMAL},#{isMember,mode=OUT,jdbcType=INTEGER})}
</select>
statementType里的CALLABLE是标注此sql为存储过程 parameterType是标注要传的参数,看了一些资料,有些同志在这里并没有写parameterType,但是也成功了,不过他们传的是map,这里咱先不管,严谨一点总是好的,还是加上。原来以为有传参,就应该有resultMap回参,但是当我在java中这样写时:
/**
* 判断是否是会员并返回会员等级
* @param iphone 电话号
*/
public InterfaceEntity isMember(String mobileUser){
InterfaceEntity ie = new InterfaceEntity();
ie.setMobileNumber(mobileUser);
return skToEmpDao.getSqlSession().selectOne("SkToEmpMapper.isMember",ie);
}
返回的是null,后来仔细一想,存储过程是只传值不返回的,返回的那个是函数,所以我们要接受的返回的东西,应该在我们传给他的参数里,也就是说调用存储过程后,所以可以写成:
/**
* 判断是否是会员并返回会员等级
* @param iphone 电话号
*/
public InterfaceEntity isMember(String mobileUser){
InterfaceEntity ie = new InterfaceEntity();
ie.setMobileNumber(mobileUser);
skToEmpDao.getSqlSession().selectOne("SkToEmpMapper.isMember",ie);
return ie;
}
语言组织的不太好,请谅解。转载请注明出处
http://shen84121062.iteye.com/blog/1213857
分享到:
相关推荐
### Ibatis调用Oracle存储过程返回自定义类型 在企业级应用开发中,尤其是在金融、保险等业务场景中,往往需要处理复杂的数据结构与逻辑。本文将深入探讨如何使用Ibatis框架来调用Oracle数据库中的存储过程,并实现...
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。在实际开发中,将 MyBatis 整合到 Oracle 数据库进行数据操作,包括增删改查,是常见的需求。以下将详细介绍这个过程。 1. **环境准备**...
在Java开发中,使用iBATIS(现在称为MyBatis)作为持久层框架时,调用数据库的存储过程是一种常见的需求。本文将详细介绍如何使用iBATIS调用存储过程,并提供一个简单的示例来说明其过程。 首先,我们需要在数据库...
MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis使用简单的XML或注解用于配置和原始映射,将接口和Java的POJOs(Plan ...
**MyBatis** 是一款优秀的持久层框架,它支持普通的 SQL 查询、存储过程以及高级映射功能。该框架的主要目标是简化 JDBC 代码的编写,并消除手动设置参数和提取结果集的过程。通过简单的 XML 或注解配置方式,...
在博客“MyBatis之一(环境搭建)”中,作者Yufenfei可能详细讲解了这些过程,帮助初学者快速入门MyBatis框架。通过阅读这篇博客和实践上述步骤,你可以深入理解MyBatis的工作原理,并熟练掌握其使用方法。
- **定义**:MyBatis是一个优秀的持久层框架,它支持普通的SQL查询、存储过程以及高级映射功能。通过使用简单的XML或注解进行配置和原始映射,它可以将接口和Java的POJOs映射成数据库中的记录。 - **优势**: - **...
PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> ${jdbc.driver}"/> ${jdbc.url}"/> ${jdbc.username}"/> ${jdbc.password}"/> ``` ...
在这个项目中,Model层可能包含对数据库的操作,Controller层负责接收请求并调用Model进行处理,最后更新或获取的数据通过View层展示给用户。 3. **数据库设计**:数据库是存储博客文章、用户信息、评论等数据的...
JavaShop V3.0 Beta2 是一个基于Java技术开发的电子商务平台的早期版本。这个压缩包包含了一系列用于构建和运行在线商店的源代码、配置文件、数据库脚本以及可能的前端资源。在这个版本中,开发者可能引入了新的特性...
MyBatis是一个优秀的Java持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis可以使用简单的XML或注解进行配置和原始映射,将接口和Java的...