Mybatis like 模糊查询,有数据,但是就是查询不出来

时间:2025-03-19 08:55:03
Mybatis配置如下: <select id="getAll" resultMap="OaEmplyeeInfoResultMap" parameterType=""> <![CDATA[ SELECT ]]> <include refid="select_param" /> <![CDATA[ FROM OM_EMPLOYEE ]]> <where> <if test="empcode!=null"> AND EMPCODE = #{empcode} </if> <if test="empname!=null"> AND EMPNAME LIKE #{empname} </if> </where> </select> Dao层如下: public List<OaEmplyeeInfo> getAllByName(OaEmplyeeInfo oaEmplyeeInfo,String empname){ List<OaEmplyeeInfo> list=null; Map map=new HashMap(); ("empname", empname); list=(List<OaEmplyeeInfo>) getSqlSession().selectList("", map); return list; } 测试代码如下: public void testQuery(){ List<OaEmplyeeInfo> fos=null; fos = (null,"王"); for(OaEmplyeeInfo li:fos){ (()); } ((0).getCardno()); } 发现怎么都查不出来数据,最后查询资料才得知: 原来Mybatis用like进行模糊查询的时候,配置与所用的数据库有关系,总结了下,具体如下: 1、mysql :LIKE CONCAT('%',#{empname},'%' ) 或者 LIKE CONCAT('%',‘${empname}’,'%' ) 2、oracle:LIKE '%'||#{empname}||'%' 我用的是oracle 把配置文件改为: <select id="getAll" resultMap="OaEmplyeeInfoResultMap" parameterType=""> <![CDATA[ SELECT ]]> <include refid="select_param" /> <![CDATA[ FROM OM_EMPLOYEE ]]> <where> <if test="empcode!=null"> AND EMPCODE = #{empcode} </if> <if test="empname!=null"> AND EMPNAME LIKE '%'||#{empname}||'%' </if> </where> </select>