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

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

则xml实现的sql语句为

    
    
  • 然而Sqlite中不包含Concat函数帮助我们处理,就只能用最原始的字符串拼接,特别的Sqlite中使用 '||' 符号做拼接而不是 ‘+’
    /**
     * 模糊查询 t_role 表
     * @param roleName 查询角色名称-模糊值
     * @return 满足规则的角色集合
     */
    @select("select * from t_role where t_role_name like '%'||#{roleName}||'%'")
    List readRoles(@Param("roleName") String roleName);
  • 拓展业务:大多数表在增加、编辑数据时会做一些重复值的校验;比如用户名唯一校验;而增加和编辑的情况有一点区别,比如仅在方法中传递一个用户名参数去数据库查询,在编辑时用户会把自身也算入重复中;这时可以选择传递用户名,id两个参数在不同的业务中进行传参操作即可

你可能感兴趣的:(SQLite 与 Mysql 分别在mybatis中模糊查询的写法)