如果参数是一个基本类型(不是一个类对象),在写sql需要对这个基本类型判断时,这个基本类型的名称必须是value,因为mybatis对于单个基本类型而言,默认名称是value,自定义的名称在用于if/when时,代码会报错(提示很模糊),但是不会提示是sql错误。
<select id="query_one" parameterType="string" resultType="user">select username namefrom users<where><!-- if这个地方一定要用value,否则mybatis会报个错误,错误提示很模糊,不容易查找。sql部分可以使用自定义的名称 --><if test="null != value and '' != value"> username = #{name}</if></where></select>