zoukankan      html  css  js  c++  java
  • MyBatis多条件查询

    640?wx_fmt=png&wxfrom=5&wx_lazy=1

    1.MyBatis多条件查询

    1.1:使用实体类  将参数封装成对象

    接口:

    public List<User> getUserListByUser(User user);

    Mapper映射文件:

    <select id="getUserListByUser" resultType="User" parameterType="User">

    select * from smbms_user where username like CONCAT('%',#{userName},'%') and userRole=#{userRole}

    </select>

    注意:#{}中参数名需要与对象的属性名一致

    1.2:使用Map集合 将参数存入Map集合进行传递

    接口:

    public List<User> getUserListByUserMap(Map<String, String> map);

    Mapper映射文件:

    <select id="getUserListByUserMap" resultType="User" parameterType="map">

    select * from smbms_user where username like CONCAT('%',#{userName},'%') and userRole=#{userRole}

    </select>

    注意:#{}中参数名需要与Map集合中的键名一致

    1.3:使用@param注解传递多个参数

    接口:

    public List<User> getUserListByParam(@Param("userName")String username,@Param("userRole")Integer roleId);

    Mapper映射文件:

    <select id="getUserListByParam" resultType="User" >

    select * from smbms_user where username like CONCAT('%',#{userName},'%') and userRole=#{userRole}

    </select>

    注意:使用@Param注解封装的参数 小括号中参数名需要与#{}中参数名一致

    1.4:直接传入多个参数 使用下标获取

    接口:

    public List<User> getUserListByParam(String username,Integer roleId);

    Mapper映射文件:

    <select id="getUserListByParam" resultType="User" >

    select * from smbms_user where username like CONCAT('%',#{0},'%') and userRole=#{1}

    </select>

    2.${}和#{}获取参数的区别?

    2.1#{}会将参数转换成String类型进行处理(特殊字符会进行转义)  ${}不会

    2.2使用#{}会进行sql预处理 也就是表示使用PreparedStatement进行执行sql语句 可以有效防止sql注入  但是使用${}不会

    2.3一般在进行排序order by的时候使用${} eg:${value} (只有单个参数时使用${value}可以获取到参数值,多个参数依然使用对象属性或Map集合的键名)

    2.4在能用#{}的时候就不要去用${}


  • 相关阅读:
    洛谷1012 拼数
    洛谷1012 拼数
    洛谷 1155 (NOIp2008)双栈排序——仔细分析不合法的条件
    bzoj 3566 [SHOI2014]概率充电器——树型
    bzoj 1415 [Noi2005]聪聪和可可——其实无环的图上概率
    洛谷 1291 [SHOI2002]百事世界杯之旅
    洛谷 1365 WJMZBMR打osu! / Easy
    洛谷 1297 [国家集训队]单选错位——期望
    洛谷 1099 ( bzoj 1999 ) [Noip2007]Core树网的核
    洛谷 2827 蚯蚓——相邻两个比较的分析
  • 原文地址:https://www.cnblogs.com/hgmyz/p/12352547.html
Copyright © 2011-2022 走看看