dao传递类参数 mybatis_mybatis用户登录,Dao层如何传入多个参数?

有两种常见的方法:

方法一

定义一个专门传递参数的Bean,并提供Setter/Getter方法,这种方法显然太繁琐。

不过可以简化一下,将多个参数放入map,将map传入即可。

方法二

可以在mapper接口定义的方法入参里,使用注解org.apache.ibatis.annotations.Param标记参数名。比如:

public interface UserMapper{

User login(@Param("name")String name,@Param("password")String password);

}

之后,在xml里使用对应的名字映射即可:

select col1,col2,col3

from tal_name

where user_name=#{name} and pwd=#{password}

要使用方法二的话,你目前的方式是不行的。

因为你是使用sqlSession.selectOne(queryId)或sqlSession.selectOne(queryId,paramObj)的方来调用的。

要使用方法二,你得先用sqlSession.getMapper(UserMapper.class)拿到定义的接口(DAO),拿到接口后,传递参数就相对自由了,因为接口里的方法定义就是常规的java方法定义。在定义的接口方法里就可以使用@Param注解来标记参数了。大致例子如下:

package cn.xxx.dao;

public interface UserMapper{

User login(@Param("name")String name,@Param("password")String password);

}

select col1,col2,col3

from tal_name

where user_name=#{name} and pwd=#{password}

此处应该注意:

自定义DAO接口的全类名cn.xxx.dao.UserMapper应该和中的namespace属性相对应。

同时,namespace的值(cn.xxx.dao.UserMapper)和select的id属性值(login)连起来其实就是你使用的sqlSession.selectOne(queryId)中用来标记查询的queryId了。

如果是maven工程,你应该将xxxMapper.xml置于资源路径(src/main/resources)下而不是源代码路径(src/main/java),否则在运行时源代码路径下的xml文件是找不到的。

另外有点建议就是:目测你用Spring来管理Bean的,鉴于此,还有另一种管理SqlSessionFactory的方式,可以不用直接在DAO里显示地注入SqlSessionFactory。此处是我以前从别人那里fock过来的一个SSM整合的示例:https://github.com/hylexus/be...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值