mybatis小问题(踩过的坑)

1. 在传过来的参数为-1时,我的判断起作用了,但是若传过来的是0时,if判断不起作用了。

        <if test="status == '0'">
            and auge_sale.status &lt;&gt;'-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 &lt;&gt;'-1'
        </if>

解决办法二:使用toString()方法转换为字符串

        <if test="status == '0'.toString()">
            and auge_sale.status &lt;&gt;'-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>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值