mybatis模糊查询搜索不到数据问题

作者:神秘网友 发布时间:2020-09-08 11:22:54

mybatis模糊查询搜索不到数据问题

mybatis模糊查询搜索不到数据问题

??昨天,在使用muybatis做模糊查询时,遇到了一个特别坑的问题:使用mybatis做模糊查询搜索不到数据,但是用sql语句在navicate里面查是可以查出结果的。

问题具体描述:
mybatis模糊查询搜索不到数据问题
mybatis模糊查询搜索不到数据问题
sql语句在navicate中可以查出结果:
mybatis模糊查询搜索不到数据问题
我的ProjectMapper.xml
mybatis模糊查询搜索不到数据问题
??到底是什么问题?该怎么解决呢?在此,我将网上我看到的方法做一个总结:

1、字符编码导致的错误
原因:jdbc的url没有添加utf-8的编码设置。
解决:

url=jdbc:mysql:///company?characterEncoding=utf-8&&useUnicode=true&serverTimezone=UTC&zeroDateTimeBehavior=CONVERT_TO_NULL

2、实体类对象与sql语句没有映射

原因:实体类对象与sql语句的字段不一致。
解决:

  • 若只是_与大写字母的差别,如user_nameuserName,那么,在配置文件中开启驼峰命名自动映射即可。
  • 若是字段的不一致,可以在mapper.xml语句里通过as别名的方式将它们之间映射起来。例如:select project_id as id from project,其中project_id为数据库里面表的字段,idproject类中的属性。

3、$与#的用法问题

原因:#$的区别最大在于:#{} 传入值时,sql解析后,参数是自带引号的;而${}穿传入值,sql解析后,参数是不带引号的。

解决:将上图中mapper.xml的#改成$

??我项目中url上编码是正确的,sql语句与实体类之间是一致的,采用了第3种方式解决了问题。但是,我看网上说可以可以这样写:

<select id="getProjectBy" parameterType="map" resultType="com.lenovocloud.package_manager.vo.ProjectVO">
   select id,`name`,version,`type`,user_id as userId,user_name as userName,ctime,mtime from project
   <where>
       <if test="condition.name!=null">
           and `name` like concat("%",#{condition.name},"%")
       </if>
       <if test="condition.type!=null">
           and `type` like concat("%",#{condition.type},"%")
       </if>
   </where>
   order by ctime desc
</select>

但我的不行,这样还是会失效,也不知道为什么。

mybatis模糊查询搜索不到数据问题相关教程

  1. Mybatis
  2. 存储过程使用光标类型返回一个集合(一行或多行查询结果)
  3. mybatis 关联查询 结果条数确与子表条数相同 问题解决方法
  4. mybatis源码解析之基础模块-log
  5. 基于okhttp3依赖和gson依赖的快递查询系统
  6. 06-MongoDB 查询索引优化-1-分析查询计划
  7. 第5章 复杂查询
  8. mybatis generator maven插件自动生成代码