美文网首页JavaWeb
JavaWeb开发:mybatis中mapper的引用和动态 S

JavaWeb开发:mybatis中mapper的引用和动态 S

作者: 蘑菇v5 | 来源:发表于2019-04-19 14:53 被阅读0次

引用:

1、#{xxx}这种方式会自动将这个值替换为PreparedStatment?来使用,如果是字符串会自动加上引号,对于排序而言就无法操作
2、${xx}这种方式叫做完全替换,直接将字符串完整的替换到这个位置,完全替换的方式可能会出现SQL注入的安全隐患。建议在参数中不要使用这种方式。但是如果使用在排序中没有任何影响

<!-- #{sx}会使用?进行替代 ,$(xx)会完整将字符串完成替代-->
    <select id="find" resultType="User" parameterType="map">
        select * from t_user
        <!-- 动态SQL -->
        <where>
            <if test="name!=null"> (username like #{name} or 
                    nickname like #{name})</if>
            <if test="type!=null"> and type=#{type}</if>
        </where>
        
        <if test="sort!=null">
            order by ${sort}
            <if test="order!=null">
            ${order}
            </if>
            <!-- <choose>
                <when test="order!=null">${order}</when>
                <otherwise>asc</otherwise>
            </choose> -->
        </if>
        limit #{pageOffset},#{pageSize}
    </select>
    
    <select id="find_count" parameterType="map" resultType="int">
        select count(*) from t_user 
        <if test="name!=null">where (username like #{name} or 
                nickname like #{name})</if>
    </select>

动态 SQL:

根据不同条件拼接SQL语句,经常出问题,动态SQL解决此问题。

动态sql

相关文章

网友评论

    本文标题:JavaWeb开发:mybatis中mapper的引用和动态 S

    本文链接:https://www.haomeiwen.com/subject/vgiqgqtx.html