zoukankan      html  css  js  c++  java
  • mybatis之parameterType传递多个参数

    当在查询的时候需要传入多个参数的时候该怎么办呢:

    1,封装成一个Model对象,底层HashMap还是一个

    复制代码
    User user=new User();
    

    user.setUserName("zhangsan");

    user.setPassword("123456");

    queryUserByuserNameAndPass(user);//为返回值类型为User

    复制代码
    <select id="queryUserByuserNameAndPass"  resultType="User" parameterType="com.j1.User"  >
    
       <span style="color: #0000ff;">select</span> <span style="color: #808080;">*</span> <span style="color: #0000ff;">from</span> <span style="color: #ff00ff;">user</span> u <span style="color: #0000ff;">where</span> u.<span style="color: #ff00ff;">user_name</span><span style="color: #808080;">=</span>#{userName} <span style="color: #808080;">and</span> u.pass_word<span style="color: #808080;">=</span><span style="color: #000000;">#{passWord}
    

    </select>

    2,使用HashMap封装

    复制代码
    //使用HashMap定义:
    
    HashMap <String,Object> map=new HashMap<String,Object>();
    

    map.put("userName","zhangsan");

    map.put("password","123456");

    queryUserByuserNameAndPass(map);//为返回值类型为User

    复制代码

    //sql 如下:

    <select id="queryUserByuserNameAndPass"  resultType="User"  parameterType="Map" >
    

    select * from user u where u.user_name=#{userName} and u.pass_word=#{passWord}

    </select>

    3,使用注解,@param

    queryUserByuserNameAndPass(@param(''userName")String userName,@param("password")String password)
    <select id="queryUserByuserNameAndPass"  resultType="User">
    

    select * from user u where u.user_name=#{userName} and u.pass_word=#{passWord}//

    </select>

    queryUserByuserNameAndPass(String userName,String PassWord);  //返回值类型为Usre  

    //sql

    复制代码
    <select id="queryUserByuserNameAndPass"  resultType="User">
    

    select * from user u where u.user_name=#{userName} and u.pass_word=#{passWord}//会报错的

    </select>

    复制代码

    改为如下:

    复制代码
    <select id="queryUserByuserNameAndPass"  resultType="User">
    

    select * from user u where u.user_name=#{0} and u.pass_word=#{1}//运行成功但是,可读性不高

    </select>

    复制代码

    //parameterType 参数类型可以是基本数据类型(int,String,long),可以是Model对象,也可以是Map;

    1,基本数据类型:

    复制代码
    //java代码
    
    @Override
    public void deleteUserById(Long id) {
    SqlSession sqlSession = sqlSessionFactory.openSession(true);
    sqlSession.delete("cn.itcast.mybatis.user.deleteUserById", id);
    }
    复制代码

    //sql

    <delete id="deleteUserById" parameterType="java.lang.Long">
          DELETE FROM tb_user WHERE id = #{id}
    </delete>

    2,Model对象

    复制代码
    //java代码:
    
    @Override
    public void saveUser(User user) {
    SqlSession sqlSession = sqlSessionFactory.openSession(true);
    sqlSession.insert("cn.itcast.mybatis.user.saveUser", user);
    }
    

    @Override
    public void updateUser(User user) {
    SqlSession sqlSession
    = sqlSessionFactory.openSession(true);
    sqlSession.update(
    "cn.itcast.mybatis.user.updateUser", user);
    }

    复制代码

    //sql

    复制代码
    <update id="updateUser" parameterType="cn.itcast.mybatis.pojo.User">
    UPDATE tb_user
    SET
    password = #{password},
    name = #{name},
    age = #{age},
    sex = #{sex},
    birthday = #{birthday},
    updated = NOW()
    WHERE
    id = #{id};
    </update>
    复制代码

    3.map

    复制代码
    //java
    
    HashMap <String,Object> map=new HashMap<String,Object>();
    

    map.put("userName","zhangsan");

    map.put("password","123456");

    queryUserByuserNameAndPass(map);//为返回值类型为User

    复制代码

    //sql 如下:

    <select id="queryUserByuserNameAndPass"  resultType="User">
    

    select * from user u where u.user_name=#{userName} and u.pass_word=#{passWord}//

    </select>

  • 相关阅读:
    跨数据库查询——dblink
    进度条
    datagrid 的标题的内容不对应整齐
    ie9table排列不对.td错行,多了一列
    进位方法
    ie9 jscript7 内存不足 页面无响应
    a标签 href触发及传值
    uploadify上传附件 点击保存无效 切F12就可以正常保存
    oracle增加用户密码,cmd导入数据库
    ${}中嵌套${}
  • 原文地址:https://www.cnblogs.com/jpfss/p/10254669.html
Copyright © 2011-2022 走看看