1. 在传过来的参数为-1时,我的判断起作用了,但是若传过来的是0时,if判断不起作用了。
<if test="status == '0'">
and auge_sale.status <>'-1'
</if>
<if test="status=='-1'">
and auge_sale.status='-1'
</if>
原因是:mybatis是用OGNL表达式来解析的,在OGNL的表达式中,’0’会被解析成字符,java是强类型的,char 和 一个string 会导致不等,所以if标签中的sql不会被解析。
解决办法一:使用双引号
<if test='status == "0"'>
and auge_sale.status <>'-1'
</if>
解决办法二:使用toString()方法转换为字符串
<if test="status == '0'.toString()">
and auge_sale.status <>'-1'
</if>
2.在定义resultMap的时候,报以下错误
我的resultMap定义如下:
<resultMap id="BaseUserByGroupId" type="cn.com.whpp.party.domain.User">
<id column="id" property="id"/>
<result column="birthday" property="birthday"/>
<result column="identityNumber" property="identityNumber"/>
<result column="imageurl" property="imageurl"/>
<result column="joinTime" property="joinTime"/>
<result column="phone" property="phone"/>
<result column="sex" property="sex"/>
<association property="group" javaType="cn.com.whpp.party.domain.Group" >
<id column="gid" property="id"/>
<result column="groupName" property="groupName"/>
<association property="group.branch" javaType="cn.com.whpp.party.domain.Branch">
<id column="bid" property="id"/>
<result column="branchName" property="branchName"/>
</association>
</association>
</resultMap>
如果是只关联了Group表的话,不会报错,但在Group下又关联了Branch的情况下这种方式就会报错了,所以我换了个方式,经过测试没有任何问题,如下所示:
<resultMap id="BaseUserByGroupId" type="cn.com.whpp.party.domain.User">
<id column="id" property="id"/>
<result column="birthday" property="birthday"/>
<result column="identityNumber" property="identityNumber"/>
<result column="imageurl" property="imageurl"/>
<result column="joinTime" property="joinTime"/>
<result column="phone" property="phone"/>
<result column="sex" property="sex"/>
<result column="username" property="username"/>
<association property="group" resultMap="GroupMap" />
</resultMap>
<resultMap id="GroupMap" type="cn.com.whpp.party.domain.Group">
<id column="gid" property="id"/>
<result column="groupName" property="groupName"/>
<association property="branch" javaType="cn.com.whpp.party.domain.Branch">
<id column="bid" property="id"/>
<result column="branchName" property="branchName"/>
</association>
</resultMap>
3.mybatis传入多个参数中包括list参数的,没加注解之前找不到groupIds,正确示例如下。
List<User> getPageUsersByGroupId(@Param("groupIds")List<Integer> groupIds,@Param("page") Integer page, @Param("limit") Integer limit) throws Exception;
<select id="getPageUsersByGroupId" resultMap="BaseUserByGroupId">
SELECT u.id,u.phone,u.username,u.sex,u.identityNumber,
DATE_FORMAT(u.birthday, '%Y-%m-%d') birthday,
DATE_FORMAT(u.joinTime, '%Y-%m-%d') joinTime,
g.groupName,b.branchName
FROM `Party_User` u LEFT JOIN Party_Group g ON u.gid=g.id
LEFT JOIN Party_Branch b ON b.id=g.bid
<where>
<if test="groupIds!=null">
u.gid in
<foreach collection="groupIds" index="index" item="groupId" open="(" separator="," close=")">
#{groupId}
</foreach>
</if>
</where>
ORDER BY u.id DESC
limit #{page},#{limit}
</select>
4.在resultMap中定义List时,老是出现找不到类的错误提示,原因是把ofType定义成了javaType。
<resultMap id="BaseResultMap" type="cn.com.whpp.party.domain.MeetingTypeRoot">
<id property="id" column="pmtr_id"/>
<result property="rootName" column="rootName"/>
<collection property="meetingTypes" ofType="cn.com.whpp.party.domain.MeetingType">
<result property="id" column="pmt_id"/>
<result property="meetingTypeName" column="meetingTypeName"/>
</collection>
</resultMap>