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);这样就将“,”去掉了。
前缀也是一个道理这里就不说了。