紧急求助,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呢 --------------------编程问答--------------------
对业务逻辑而言更清晰,避免对不需要的参数设置null --------------------编程问答-------------------- 哦 网上说不允许
mybatis的mapper不允许重载,因为它需要通过方法名称[不加签名]去查找需要执行的sql --------------------编程问答--------------------
重载的方法名是一样的,其实就是重复利用同一个SQL就行了,因为mybatis支持动态sql,所以我想如果参数不一样,动态sql中本身就带有对参数的判断,就好像把map作为参数传入一样,map里面的参数是不做强制检查的 --------------------编程问答--------------------
呵呵 你想太多了 老老实实用动态sql吧
补充:Java , Java EE