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>

  • 相关阅读:
    SpringMVC与Hibernate配置备忘
    Intent在Activity间的传值
    高效的JSON处理_ Jackson
    Ireport+JasperReport制作报表三折线图
    SpringMVC与Ibatis整合开发配置备忘
    Ireport+JasperReport制作报表二JasperReport编译模板
    Android开发之简单计算器
    android平台中解析xml文件:SAX、PULL
    SpringMVC SimpleFormController学习备忘
    java的十个大类
  • 原文地址:https://www.cnblogs.com/jpfss/p/10254669.html
Copyright © 2011-2022 走看看