本文主要是介绍Mybatis like 模糊查询,有数据,但是就是查询不出来,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
今天修改项目遇到的问题,mybatis模糊查询,有数据,就是查不出来。也不报错。
问题虽然最后搞定了,来总结下。
Mybatis配置如下:<select id="getAll" resultMap="OaEmplyeeInfoResultMap"parameterType="com.deppon.oa.module.oaEmplyeeInfo.domain.OaEmplyeeInfo"><![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();map.put("empname", empname);list=(List<OaEmplyeeInfo>) getSqlSession().selectList("com.deppon.oa.module.oaEmplyeeInfo.domain.OaEmplyeeInfo.getAll", map);return list;}测试代码如下:public void testQuery(){List<OaEmplyeeInfo> fos=null;fos = oaEmplyeeInfoDao.getAllByName(null,"王");for(OaEmplyeeInfo li:fos){System.out.println(li.getEmpname());}Assert.assertNotNull(fos.get(0).getCardno());}发现怎么都查不出来数据,最后查询资料才得知:原来Mybatis用like进行模糊查询的时候,配置与所用的数据库有关系,总结了下,具体如下:1、mysql :LIKE CONCAT('%',#{empname},'%' ) 或者 LIKE CONCAT('%',‘${empname}’,'%' )2、oracle:LIKE '%'||#{empname}||'%'我用的是oracle 把配置文件改为:<select id="getAll" resultMap="OaEmplyeeInfoResultMap"parameterType="com.deppon.oa.module.oaEmplyeeInfo.domain.OaEmplyeeInfo"><![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>
这篇关于Mybatis like 模糊查询,有数据,但是就是查询不出来的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!