mybatis零碎总结

2017-12-28  本文已影响17人  墨色尘埃

1、xml中哪些标签可以加逗号,<where>里不能加逗号,<set>里可以加逗号
2、多条update语句,先delete再insert比直接update快。单条就无所谓了
3、navicat 视图,也可以使用自动生成工具生成mapper/model/mapper.xml
4、Map<String,String> map 作为参数接收的时候,mysql返回的int值,是指当前执行的sql语句所影响的行数n。
5、resultType可以返回int/String,能不能返回对象?可以用!!

<select id="getDynaFieldAuth" parameterType="java.util.Map" resultType="com.jsptpd.gayg.modules.secu.model.FieldAuth">
        SELECT
        FIELD_KEY,
        FIELD_AUTH,
        DETAIL_AUTH
        FROM
        t_enterprise_extra_role t
        WHERE
        t.ROLE_ID IN (
        SELECT
        ROLE_ID
        FROM
        t_user_role r
        <where>
            <if test="userId !=null">
                r.USER_ID = #{userId,jdbcType=VARCHAR}
            </if>
        </where>
        )
    </select>

6、in的用法

SELECT
    *
FROM
    t_menu
WHERE
    MENU_ID IN (
        SELECT
            MENU_ID
        FROM
            t_role_menu
        WHERE
            ROLE_ID = '102001001'
        AND SYSCODE = '102001'
    )

7、xml中模糊查询

<if test="enterpriseName!=null">
    AND ENTERPRISE_NAME LIKE '%' #{enterpriseName,jdbcType=VARCHAR} '%'
</if>

8、prefix、suffix等标签
<trim prefix="" suffix="" suffixOverrides="" prefixOverrides=""></trim>
prefix:在trim标签内sql语句加上前缀。
suffix:在trim标签内sql语句加上后缀。
suffixOverrides:指定去除多余的后缀内容,如:suffixOverrides=",",去除trim标签内sql语句多余的后缀","。
prefixOverrides:指定去除多余的前缀内容

<insert id="insert" parameterType="com.tortuousroad.groupon.cart.entity.Cart">  
        insert into cart  
        <trim prefix="(" suffix=")" suffixOverrides=",">  
            <if test="id != null">  
                id,  
            </if>  
            <if test="userId != null">  
                user_id,  
            </if>  
            <if test="dealId != null">  
                deal_id,  
            </if>  
            <if test="dealSkuId != null">  
                deal_sku_id,  
            </if>  
            <if test="count != null">  
                count,  
            </if>  
            <if test="createTime != null">  
                create_time,  
            </if>  
            <if test="updateTime != null">  
                update_time,  
            </if>  
        </trim>  
        <trim prefix="values (" suffix=")" suffixOverrides=",">  
            <if test="id != null">  
                #{id,jdbcType=BIGINT},  
            </if>  
            <if test="userId != null">  
                #{userId,jdbcType=BIGINT},  
            </if>  
            <if test="dealId != null">  
                #{dealId,jdbcType=BIGINT},  
            </if>  
            <if test="dealSkuId != null">  
                #{dealSkuId,jdbcType=BIGINT},  
            </if>  
            <if test="count != null">  
                #{count,jdbcType=INTEGER},  
            </if>  
            <if test="createTime != null">  
                #{createTime,jdbcType=TIMESTAMP},  
            </if>  
            <if test="updateTime != null">  
                #{updateTime,jdbcType=TIMESTAMP},  
            </if>  
        </trim>  
    </insert>  

假设没有指定 suffixOverrides=","
执行的sql语句也许是这样的:insert into cart (id,user_id,deal_id,) values(1,2,1,);显然是错误的
指定之后语句就会变成insert into cart (id,user_id,deal_id) values(1,2,1);这样就将“,”去掉了。
前缀也是一个道理这里就不说了。

上一篇 下一篇

猜你喜欢

热点阅读