当前位置:编程学习 > JAVA >>

紧急求助,MyBatis的自动映射Mapper接口支持重载吗?

我通过org.mybatis.spring.mapper.MapperFactoryBean将一个Mapper接口自动生成bin实例
比如Mapper.java:
public void update(@param("userid") int userid);
public void update(@param("userid") int userid,@param("password") String password);

然后在xml中
<update id="update">
   update useraccount
   set    lastTime=currentTime,
          <choose>
             <when test="password!=null">password=#{password},</when>
          </choose>
          currentTime=GetDate()
   where  userid=#{userid}
</update>

主要想如果没传入password参数,就不更新password字段,如果传入了,就更新这个字段。但实际中如果使用第一个方法,mybatis就报错,说找不到password参数,好像不支持方法重载,求大家解答,谢谢! --------------------编程问答-------------------- 为啥非要重载,动态sql呢 --------------------编程问答--------------------
引用 1 楼 songbgi 的回复:
为啥非要重载,动态sql呢

对业务逻辑而言更清晰,避免对不需要的参数设置null --------------------编程问答-------------------- 哦 网上说不允许

mybatis的mapper不允许重载,因为它需要通过方法名称[不加签名]去查找需要执行的sql --------------------编程问答--------------------
引用 3 楼 songbgi 的回复:
哦 网上说不允许

mybatis的mapper不允许重载,因为它需要通过方法名称[不加签名]去查找需要执行的sql

重载的方法名是一样的,其实就是重复利用同一个SQL就行了,因为mybatis支持动态sql,所以我想如果参数不一样,动态sql中本身就带有对参数的判断,就好像把map作为参数传入一样,map里面的参数是不做强制检查的 --------------------编程问答--------------------
引用 4 楼 niss 的回复:
Quote: 引用 3 楼 songbgi 的回复:

哦 网上说不允许

mybatis的mapper不允许重载,因为它需要通过方法名称[不加签名]去查找需要执行的sql

重载的方法名是一样的,其实就是重复利用同一个SQL就行了,因为mybatis支持动态sql,所以我想如果参数不一样,动态sql中本身就带有对参数的判断,就好像把map作为参数传入一样,map里面的参数是不做强制检查的


呵呵  你想太多了  老老实实用动态sql吧
补充:Java ,  Java EE
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,