#MyBatis:模糊查询的两种实现方式 @FDDLC

    科技2024-04-06  99

    情境设置:假设name的值有"Zhao"、"Qian"、"Sun"、"Li"。现在要查找name中含"a"的,即"Zhao"、"Qian"。

     

    方式一:

    xml:

    <select id="findByName" parameterType="String" resultType="cn.liuxingchang.domain.Account"> select * from account where name like #{name} </select>

    Java:

    List<Account> accounts = dao.findByName("%a%");

    总结:SQL语句中不含通配符%,方法参数要使用通配符%

     

    方式二:

    xml:

    <select id="findByName" parameterType="String" resultType="cn.liuxingchang.domain.Account"> select * from account where name like '%${value}%' </select>

    Java:

    List<Account> accounts = dao.findByName("a");

    总结:

    1、SQL语句中含有通配符%,方法参数无需通配符%(有也无妨);

    2、注意到没?xml中的SQL语句'%${value}%'很特别!特别在哪呢?

        2.1、用了单引号,其实用双引号也行!

        2.2、没用#号,而是用的$!

        2.3、按说大括号里应该是name,即{name},怎么变成了{value}?是的,这种方式的模糊查询只能传一个参数,而且不管这个参数名叫什么,大括号号只能是value这个单词!

     

    两种方式的比较:

    方式一使用的是PreparedStatement对象的参数占位符,方式二使用的是Statement对象的字符串拼接!

     

    Processed: 0.011, SQL: 8