zoukankan      html  css  js  c++  java
  • MyBatis的SQL语句映射文件详解(三)----多参数传递的几种方式

    1.单一基本类型参数(String,int等)

    单一的基本类型参数,将对应语句中的parameterType的值与参数的类型相同。然后直接 用“#{参数名}” 来获取

    java代码

    //String类型的参数 username
    public
    User findUser(String usernumber) { return (User) sqlSessionTemplate.selectOne("findUserByUsernumber", usernumber); }

    xml代码

    //对应paramterType="string"
    <
    select id="findUserByUsernumber" parameterType="string" resultType="User"> select * from user where usernumber = #{usernumber} </select>

    2.Java实体类型参数

    java实体类型参数:将parameterType的值设为对应的 Java实体类,然后用#{类的属性名}来获取

    java代码

    //User实体类
    public
    void updateUser(User user) { sqlSessionTemplate.update("updateUser", user); }

    xml代码

    //将parameterType类型指向对应的类的具体地址(包名+类名),也可指向typeAlias中的别名(在mybatis.xml)文件中
    <
    update id="updateUser" parameterType="User" > update user set username=#{username},loginname=#{loginname},loginpassword=#{loginpassword},sex=#{sex},birthday=#{birthday} where usernumber=#{usernumber} </update>

    3.多个基本类型参数
        在具体业务关系中,往往需要传多个参数,比如:登录----->用户名+密码

    ①利用map进行传参

    将多个参数设置到map里,用#{键值}来取

    public User findUser(String loginname, String loginpassword) {
            // TODO Auto-generated method stub
            Map<String,String> map=new HashMap<String, String>();
            map.put("loginname", loginname);
            map.put("loginpassword", loginpassword);
            return (User) sqlSessionTemplate.selectOne("loginUser", map);
            
        }
           <select id="loginUser" parameterType="map" resultType="User">
                select * from user where loginname=#{loginname} and loginpassword=#{loginpassword}
            </select>

    ②利用注解方式

    使用@Param("参数名")注解的方式,在sql语句中直接用#{参数名}取出

    public User findUser2( @Param("loginname")String loginname, @Param("password")String password);
             <select id="findUser2" parameterType="string" resultType="User">
                select * from user where loginname=#{loginname} and password=#{password}
            </select>

    ③利用#{0.1.2....}来取

    #{0}表示第一个参数,#{1}表示第二个参数,以此类推

    public User findUser2(String loginname,String password);
           <select id="findUser2" parameterType="string" resultType="User">
                select * from user where loginname=#{0} and password=#{1}
            </select>

     

  • 相关阅读:
    1021. 从前有座山——java
    1004. 西西弗斯式的命运——java
    1025. 水枪灭火——java
    1020. 分解质因数——java
    1024.排序——C语言
    1024. 排序——java
    1022. Fib数列——java
    1006. 求和游戏——java
    1005. 数独——java
    SpringBoot 升级到 2.1 后,启动程序时控制台不打印 API 的解决方法及一些感想
  • 原文地址:https://www.cnblogs.com/nww57/p/4691581.html
Copyright © 2011-2022 走看看