java - mybatis用户登录,Dao层如何传入多个参数?

查看:349
本文介绍了java - mybatis用户登录,Dao层如何传入多个参数?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

1、mybatis初学者,刚刚起步,在试着做个用户登录的demo,做了通过用户名进行查询,可以实现,我看了sqlsession下的方法,并没有传入多个参数的select方法,如何才能实现多参数查询呢?DAO层怎么调用?比如我想通过用户名和密码来查询数据库表中的某个用户。两个参数(username,password)
2、

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 id="login"    resultMap="UserResultMap">
    select col1,col2,col3
    from tal_name
    where user_name=#{name} and pwd=#{password}
</select>

要使用方法二的话,你目前的方式是不行的。
因为你是使用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);
}

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.xxx.dao.UserMapper">
    <select id="login"    resultMap="UserResultMap">
        select col1,col2,col3
        from tal_name
        where user_name=#{name} and pwd=#{password}
    </select>
</mapper>

此处应该注意:

  • 自定义DAO接口的全类名cn.xxx.dao.UserMapper应该和<mapper namespace="cn.xxx.dao.UserMapper">中的namespace属性相对应。
    同时,namespace的值(cn.xxx.dao.UserMapper)和selectid属性值(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...

这篇关于java - mybatis用户登录,Dao层如何传入多个参数?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆