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

 zhaoyan666777 发布于 2022-10-25 06:18
  • php
  • 1 个回答
    • 有两种常见的方法:

      方法一

      定义一个专门传递参数的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...

      2022-10-26 14:22 回答
    撰写答案
    今天,你开发时遇到什么问题呢?
    立即提问
    热门标签
    PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
    Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有