• Mybatis 的多值传递


    转载:https://blog.csdn.net/youanyyou/article/details/79406486

    输入类型为多值时

    1、@Param注解传参法

    #{}里面的名称对应的是注解 @Param括号里面修饰的名称。

    这种方法在参数不多的情况还是比较直观的,推荐使用

    userMapper.xml代码: (如果传入的数据类型不一致,parameterType可以省略不写)

    <!-- 登录:根据用户名密码返回user对象 -->
         <select id="login" parameterType="String" resultType="User">
             SELECT * FROM T_USER where loginname = #{username} and loginpass = #{password}
         </select>

    userMapper.java接口打码:

    User login (@Param("username")String username,@Param("password")String password) throws Exception;

    2、顺序传参法

    #{}里面的数字代表你传入参数的顺序。

    这种方法不建议使用,sql层表达不直观,且一旦顺序调整容易出错。

    userMapper.xml代码: (如果传入的数据类型不一致,parameterType可以省略不写)

    <select id="login" parameterType="String" resultType="User">
           SELECT * FROM T_USER where loginname = #{0} and loginpass = #{1}
    </select>

    userMapper.java接口打码:

    User login(String username,String password) throws Exception;

    3、Map传参法

    #{}里面的名称对应的是Map里面的key名称。

    这种方法适合传递多个参数,且参数易变能灵活传递的情况。

    public User selectUser(Map<String, Object> params);
    
    <select id="selectUser" parameterType="java.util.Map" resultMap="UserResultMap">
        select * from user
        where user_name = #{userName} and dept_id = #{deptId}
    </select>

    4、Java Bean传参法

    #{}里面的名称对应的是User类里面的成员属性。

    这种方法很直观,但需要建一个实体类,扩展不容易,需要加属性,看情况使用。

    public User selectUser(Map<String, Object> params);
    
    <select id="selectUser" parameterType="com.test.User" resultMap="UserResultMap">
        select * from user
        where user_name = #{userName} and dept_id = #{deptId}
    </select>
  • 相关阅读:
    CentOS7安装minio
    xshell连接虚拟机Connection failed
    Mysql时间加减函数
    mysql存储过程模板
    Activiti实现会签功能
    2018考研复试流程
    C编程经验总结5(剧终)
    《数据结构总结》
    《关于安卓和IOS开发》
    番外特别篇之 为什么我不建议你直接使用UIImage传值?--从一个诡异的相册九图连读崩溃bug谈起
  • 原文地址:https://www.cnblogs.com/64Byte/p/13055520.html
Copyright © 2020-2023  润新知