写法一
通过CONCAT()将两个字符串连接起来
@Ognl@isNotEmpty()函数是用来判断你传入的值是否不为空,不为空才在sql里添加这个查询条件,这是动态mybatis sql语句的写法,idcard就是你传入的值
<sql id="getAllWhere">
<if test="@Ognl@isNotEmpty(idcard)">AND idcard LIKE CONCAT(CONCAT('%', #{idcard}), '%') </if>
</sql>
写法二
通过自己添加%%
<sql id="getAllWhere">
<if test="@Ognl@isNotEmpty(username)">AND username LIKE '%${username}%'</if>
</sql>
写法三
通过java后台拼接再传入
java代码
给user对象的username设置传入的值(name),这个时候拼接了模糊查询的百分号
user.setUsername("%" + name + "%");
mybatis的sql文件写法
<!-- 这里就不能用@Ognl@isNotEmpty了,因为传过来的值不可能是空的,所有只能通过直接判断username是否等于%%来决定是否为空-->
<sql id="getAllWhere">
<if test="username != '%%'">AND username LIKE #{username}</if>
</sql>
引用
上面写的只是代码块,下面在具体语句引用代码块,用mybatis的include标签引用
<select id="count" resultType="long" parameterType="Map">
SELECT count(*) FROM real_name_validate WHERE 1=1
<include refid="getAllWhere" />
</select>