Sqltile 与 Mysql 分别在mybatis中模糊查询的写法

  • MySQL 中常使用concat函数处理字符串拼接,尤其是模糊查询中
    假设Mapper接口如下定义
    /**
     * 模糊查询 t_role 表
     * @param roleName 查询角色名称-模糊值
     * @return 满足规则的角色集合
     */
    List<Role> readRoles(@Param("roleName") String roleName);

则xml实现的sql语句为

    <!--  模糊查询  -->
    <select id="readRoles" resultType="com.pojo.Role">
        select
        t_role_id as roleId,
        t_role_name as roleName,
        t_role_value as roleValue,
        t_role_desc as roleDesc
        from t_role tsr
        <where>
            <if test="roleName != null and roleName != ''">
                tsr.t_role_name LIKE CONCAT('%',#{roleName},'%')
            </if>
        </where>
    </select>
  • 然而Sqlite中不包含Concat函数帮助我们处理,就只能用最原始的字符串拼接,特别的Sqlite中使用 '||' 符号做拼接而不是 ‘+’
    /**
     * 模糊查询 t_role 表
     * @param roleName 查询角色名称-模糊值
     * @return 满足规则的角色集合
     */
    @select("select * from t_role where t_role_name like '%'||#{roleName}||'%'")
    List<Role> readRoles(@Param("roleName") String roleName);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章