昨天在项目经理那里得到了一个需求,所有业务逻辑都写在存储过程里面。
理由是:
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
分享到:
相关推荐
能不能写个动态的业务,只输入存储过程名称,自动获取存储过程参数,并且参数的数据从前台传递过来...只根据输入不同的存储过程名称、参数内容,自动调用不同的存储过程。 已经使用在多个项目中 全开源项目 请放心下载
mybatis3.0配置,sql语句查询,编写,怎么使用都有
mybatis3.0官方中文文档: 网页版、内容非常详细、还有对应jar包介绍
主要介绍了Mybatis调用Oracle存储过程的方法介绍,需要的朋友可以参考下
ibatis调用oracle存储过程分页
在已有的spring+mybatis 基本操作oracle数据库的基础上,增加了3个调用存储过程的例子:无返回值、返回结果集、返回多个结果,希望对大家能有所帮助
Spring3.0+myBatis3.0
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 ...
spring3.0+struts2+mybatis3.0整合 增,删,查,改,like查询
Struts2+Spring3.0+MyBatis3.0
springboot继承mybatis后,通过mybatis调用oracle数据库中创建的存储过程,并获取通过游标返回的数据。
刚写的springmvc4.0+mybatis3.0整合+log4j.rar
怎么利用MyBatis传List类型参数到数据库存储过程中实现批量插入数据?接下来通过本文给大家介绍Mybatis传list参数调用oracle存储过程,需要的朋友可以参考下
mybatis调用orclae存储过程
mybatis3.0基础操作可以帮助新手更快的完成入门学习,希望对大家有帮助
很好的Mybatis3.0开发指南,本人花了一天就弄懂了七分左右 蛮有用的
mybatis调用Oracle存储过程(无参、有入出参)等各种情况例子的详细使用方法 1.无参存储过程调用 2.入参存储过程调用 3.出参存储过程调用 4.入 和 出 参存储过程调用,以及获取出参结果 5.结果集存储过程调用
sppring4.2,mybatis3.0,jboss
SpringMVC4.0+MYBATIS3.0增删改查 用的是oracle数据库 数据看配置文件自己配置一下 表名SM_USER 列ID,NAME.PASSWORD 一定要匹配正确 否则报错
spring3.0+,经典版本,完整架包,包含spring+json+gson+mysql,整理不易,请大家下载后好好使用,有什么欠缺,大家可以回复我。