MyBatis参数传入

目录

参数

    单个参数

    多个参数

        1. 命名参数

        2. java对象

        3. 根据位置

${}和#{}的区别

parameterType


参数

    单个参数

        在mapper文件中获取单个简单类型参数的值, 使用#{任意值}

        因为只有一个参数所以位置不会搞错, 如果多个参数就不能使用这个方式了

        在MyBatis内部是对JDBC的封装, 这里的替换是PrepareStatement的占位符替换

        public Student selectStudentById(Integer id);
        <!--
            在mapper文件中获取单个简单类型参数的值, 使用#{任意值}
            因为只有一个参数所以位置不会搞错, 如果多个参数就不能使用这个方式了
            在MyBatis内部是对JDBC的封装, 这里的替换是PrepareStatement的占位符替换
        -->
            <select id="selectStudentById" parameterType="java.lang.Integer" resultType="org.example.domain.Student" >
            select * from t_student where id=#{id}
            </select>

    多个参数

        1. 命名参数

        命名参数, 在形参定义之前加上 @Param("自定义参数名")

        在mapper文件中获取时候使用#{自定义参数名}

        List<Student> selectMultiParam(@Param("myName") String name, @Param("myAge") Integer age);
            <!--    多个参数, 使用别名-->
            <select id="selectMultiParam" resultType="org.example.domain.Student">
                select * from t_student where name=#{myName} or age=#{myAge}
            </select>

        2. java对象

        多个参数, 使用java对象作为接口方法的参数

        实际开发中使用较多

        List<Student> selectMultiObject(Student student);
        <!--多个参数, 使用java对象的属性值,作为参数实际值
            使用对象语法: #{属性名,javaType=类型名称,jdbcType=数据类型} 很少用。
                javaType:指java中的属性数据类型。
                jdbcType:在数据库中的数据类型。
                例如: #{paramName,javaType=java.lang.String,jdbcType=VARCHAR}

            我们使用的简化方式: #{属性名}  ,javaType, jdbcType的值mybatis反射能获取。不用提供

        -->
            <select id="selectMultiObject" resultType="org.example.domain.Student" >
                select * from t_student where name=#{name} or age=#{age}
            </select>

        3. 根据位置

        还有多个参数根据位置 #{arg0}, #{arg1} 等

${}和#{}的区别

            ${}不是预编译的, 可能有SQL注入问题, 一次执行一次编译, 效率低

            #{}是预编译的, 不会发生SQL注入, 且多次使用一次编译, 效率高

parameterType

    parameterType表示方法中参数的数据类型, 需要写权限定名, 或者是MyBatis为他起的别名

    也可以不写, 建议不写, 因为MyBatis会根据反射获得参数
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值