zoukankan      html  css  js  c++  java
  • Java -- MyBatis学习笔记6、参数传递

    1、parameterType

    接口中方法参数的类型,类型的完全限定名或别名。这个属性是可选的,因为MyBatis可以推断出具体传入语句的参数.

    • 比如dao层接口中有一个查询单个对象的方法:
    public UserInfo selectUser(int id);
    
    • 对应的mapper映射文件如下:
    <select id="selectUser" parameterType="int" resultType="com.rg.entity.UserInfo">
         select * from UserInfo where id = #{id}
    </select>
    

    这里边使用的int,而不是全限定名称、是因为mybatis里给每个类型都定义了别名、可以查阅相关文档进行对照。

    2、传递简单参数

    Dao层接口中方法的参数只有一个简单类型、java基本类型和 String,在mapper文件中的标签中的SQL语句使用占位符#{任意字符}即可接收、和方法的参数名无关。

    • 还以上边代码为例、将mapper文件中的SQL语句中的#{id}改为#{userid}也是可以的,如下:
    <select id="selectUser" parameterType="int" resultType="com.rg.entity.UserInfo">
        select * from UserInfo where id = #{userid}
    </select>
    

    3、传递多个参数-Param

    当Dao接口方法多个参数、推荐@Param注解传参、在每个参数前边添加@Param(“自定义参数名”)、就相当于给每个参数定义别名、那么在mapper文件中就就这样使用:#{自定义参数名}

    • Dao层接口方法:
    public UserInfo selectUser(@Param("uid") int id, @Param("uname") String name);
    
    • mapper映射文件:
    <select id="selectUser" resultType="com.rg.entity.UserInfo">
         select * from UserInfo where id = #{uid} and Name=#{uname}
    </select>
    

    4、传递多个参数-对象

    使用Java对象传递参数、在mapper文件SQL语句占位符中就写对象里边属性名称就行。

    • 创建实体类、用来传递参数
    public class QueryParam
    {
        private int userId;
        private String userName;
        //get set toString....
    }
    
    • Dao接口中方法
    public UserInfo selectUser(QueryParam queryParam);
    
    • mapper映射文件
    <select id="selectUser" resultType="com.rg.entity.UserInfo">
        select * from UserInfo where id = #{userId} and Name=#{userName}
    </select>
    

    以上就是在MyBatis中最常用的参数传递的方式了。当然、还有其它方式,比如按位置传递、使用map传递等等、不过这都不常用、掌握这几种常用的就行了。

  • 相关阅读:
    [kuangbin带你飞]专题十二 基础DP1 E
    hdu 1203 I NEED A OFFER! (01背包)
    hdu 2602 Bone Collector (01背包)
    hdu 4513 吉哥系列故事——完美队形II (manacher)
    hdu 2203 亲和串 (KMP)
    hdu 1686 Oulipo (KMP)
    hdu 1251 统计难题 (字典树)
    hdu 2846 Repository (字典树)
    hdu 1711 Number Sequence (KMP)
    poj 3461 Oulipo(KMP)
  • 原文地址:https://www.cnblogs.com/dcy521/p/14746773.html
Copyright © 2011-2022 走看看