Mybatis的增删改查语法标签

1.增加(insert)

<!--添加所有的商品-->
    <insert id="add" parameterType="类的全路径" useGeneratedKeys="true" keyProperty="id">
        insert into "表名"
        <trim prefix="(" suffix=")" suffixOverrides=",">
            <if test="goodsId != null">
                goods_id,
            </if>
        </trim>
        <trim prefix="values (" suffix=")" suffixOverrides=",">
            <if test="goodsId != null">
                #{goodsId ,jdbcType=INTEGER},
            </if>
        </trim>
    </insert>

上述写法主要是为了增加健壮性。

返回新增的数据的id

添加:useGeneratedKeys=“true” keyProperty=“id”

  <insert id="add" parameterType="类的全路径" useGeneratedKeys="true" keyProperty="id">
       
    </insert>

Controller层代码

activityService.add(activity);
Integer id = activity.getId();   // id就是返回的主键

2.查询(select)

范围查询以及删除(传入的字符串类型)

<select id="" resultType="java.util.List" parameterType="java.lang.String">
        select name from "表名" where id in (${goodsIds})
</select>

模糊查询并且防注入sql语句

<select id="get" resultMap="BaseResultMap">
        SELECT * FROM table where isdeleted = 0
        <if test="name != null and name != '' " >
            AND name like concat('%',#{name},'%')
        </if>
    </select>

3.更新(update)

最简单的不使用便签的形式。

<update id="update" parameterType="实体类全路径">
        update "表名" set status = "2" where id = ${id}
    </update>

使用和标签

<update id="update" parameterType="com.community.model.Activity">
        update t_activity
        <set>
            <if test="name != null">
                name = #{name,jdbcType=VARCHAR},
            </if>
        </set>
        where id = #{id}
    </update>

4.删除(delete)

单个数据删除忽略不写,下面主要提供两种批量删除的方式,原理都是用关键字“in”,但是写法不同,方式二可以防注入。

one: 直接使用in+范围(传进来的是字符串类型,逗号拼接)

Mapper.java接口:
// ids是字符串类型,用逗号(,)拼接
int del(String ids);

Mapper.xml文件:
<delete id="del" parameterType="java.lang.String">
        delete from member
        where id in (${ids})
</delete>

two:使用foreach标签删除,可以防注入,传进来的是数组

Mapper接口:
/**
* @Description: del 根据ids集合删除
* @Param: [ids]  数组
 * @return: void
 */
 public void del(String[] ids);

Mapper.xml文件:
<delete id="del" parameterType="String">
        delete from t_team_type where id in
        <foreach collection="array" item="id" open="(" separator="," close=")">
			#{id}
        </foreach>
</delete>

补充:返回类型resultMap和resultType的使用

resultMap用于实体类的映射,把表中字段和实体类的字段建立映射。



select... ``` resultType指定返回值的类型,可以使实体类,也可以是基本的String,int,list,map等类型。 1.实体类的话,必须表中字段和实体类字段完全一致,才可以建立映射。
<select id="get" resultType="类的全路径">
        SELECT * FROM ...
</select>

2.也可以是基本的数据类型,最常用的List,map等,map类型如下:

<select id="get" resultType="java.util.HashMap">
        SELECT * FROM ...
</select>

<!--返回值可以使Map类型,也可以是List<Map<?,?>>类型,list<Map>接口如下-->
List<Map<String,Object>> get();
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值