• 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>

  • 相关阅读:
    关于HashMap的线程安全问题
    Java利器之UML类图详解
    mongoDB4.0数据库
    requests-html库render的使用
    爬虫最新的库requests-html库总结
    爬虫多次爬取时候cookie的存储用于登入
    requests模块响应体属性和方法重新整理
    Visual Studio 代码补全功能有时候会失效的原因
    C++Primer笔记——文本查询程序(原创,未使用类)
    Clion 常用快捷键
  • 原文地址:https://www.cnblogs.com/jpfss/p/10254669.html
Copyright © 2020-2023  润新知