mybatis 动态SQL 增删改查

一、什么是动态SQL呢?
就是where后面的条件不是确定的 根据用户的选择动态产生的sql就是动态sql。

1.1 动态sql之查询 select

<select id="selectlike" parameterType="map" resultType="app_dynamicSql.User"> 
select * from t_user 
<where>
<if test="pid!=null">
and id = #{pid}
</if>
<if test="pname!=null">
userName like #{pname}
</if>
</where>
</select>

1.2动态sql之更新 update 

update t_user set name = ? password = ?;

<update id="" parameterType="Map">
update t_user
<set>
<if test="pid!=null">
id = #{pid},
</test>
<if test="pname!=null">
name = #{name},
</test>	
</set>
where id = #{pid}
</update>

1.3 动态sql之删除 delete 批量删除

foreach 属性详解
collection 表示参数类型 比如是数组或者集合
open 表示以神符号开始
close 表示以什么符号结束
separator 表示分隔符
item 表示要遍历的名称

<!-- 动态删除之集合版本 -->

<delete id="dynaDeleteList">
delete from t_user where id in
<foreach collection="list" open="(" close=")" separator="," item="ids" >
#{ids}
</foreach>
</delete>

<!--动态删除之数组版本-->
<delete id="dynaDeleteArray">
delete from t_user where id in 
<foreach collection="参数类型" open="(" close=")" separator="," item="最好是形参名字">
#{最好是形参的名字}
</foreach> 
</delete>

1.4 动态sql之插入 inert

<sql id="key">
<trim suffixOverrides=",">
<if test="id!=null">
id,
</if>
...
</trim>
</sql>
<sql id="value">
<trim suffixOverrides=",">
<if test="id!=null">
#{id},
</if>
...
</trim>
</sql>

<insert id="dynaInsert" parameterType="参数类型">
insert into t_user(<include refid="key"></include>) values(<include refid="value"></include>)
</insert>

XML配置文件:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-mappe
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值