一、新增(insert)
- <insert id="saveCart" useGeneratedKeys="true" keyProperty="id">
- insert into mall_oms.oms_cart(
- user_id,
- sku_id,
- title,
- main_picture,
- price,
- quantity)
- values (#{userId},
- #{skuId},
- #{title},
- #{mainPicture},
- #{price},
- #{quantity})
- insert>
id="mapper层对应的名字"
useGeneratedKeys="true"开启id键生成 keyProperty="id" 生成id键,执行此sql语句会返回一个id值。
1.1多条记录插入
Mapper映射
void saveProjectCoord(List ProjecList) ;
SQL语句
- <insert id="saveProjectCoord">
- INSERT INTO map_coord(
- longitude,
- latitude,
- project_id
- ) VALUES
- <foreach collection="ProjecList" separator="," item="list">
- (#{list.longitude},#{list.latitude},#{list.projectId})
- </foreach>
- </insert>
注意:values后面的括号, collection中存放的是前端传来的值的名称 ProjecList
二、删除(delete)
- <delete id="removeAllCarts">
- delete
- from mall_oms.oms_cart
- where user_id = #{userId}
- delete>
三、修改(update)
- <update id="updateQuantityById" parameterType="xxxxxx">
- update mall_oms.oms_cart
- set quantity=#{quantity}
- where id = #{id}
- update>
四、查询(select)
- <select id="selectExistsCart" resultMap="BaseResultMap">
- select
- <include refid="SimpleQueryFields"/>
- from
- mall_oms.oms_cart
- where user_id=#{userId}
- and sku_id=#{skuId}
- select>
reultMap可以替换为resultType
<select id="selectExistsCart" resultType="cm.mall.pojo.order.vo.CartStandardVO">
模糊查询
- <if test="wbsName != null and wbsName != ''">
- and a.wbs_name like concat( '%', #{wbsName},'%')
- if>
五、reultMap设置Mybatis的关系映射
- <resultMap id="OrderListMapper" type="cn.tedu.mall.pojo.order.vo.OrderListVO">
- <id column="id" property="id"/>
- <result column="sn" property="sn"/>
- <result column="user_id" property="userId"/>
- <result column="contact_name" property="contactName"/>
-
-
- <collection property="orderItems"
- ofType="cn.tedu.mall.pojo.order.vo.OrderItemListVO">
-
- <id column="ooi_id" property="id"/>
- <result column="order_id" property="orderId"/>
- <result column="sku_id" property="skuId"/>
- <result column="title" property="title"/>
- collection>
-
- resultMap>
public class OrderListVO implements Serializable {
private List<OrderItemListVO> orderItems;
}
当前实体类中有 集合 类型属性,要使用collection标签映射
property:指定实体类中集合的属性名
javatype:指定当前集合的类型,默认List类型
ofType:指定当前集合泛型的类型
column:列属性
六、设置SQL语句片段
- <sql id="SimpleQueryFields">
- <if test="true">
- id,
- user_id,
- sku_id,
- title,
- main_picture,
- price,
- quantity
- if>
- sql>
使用时用
refid="设置的片段名"
七、遍历
利用mapper层传来的一个数组,遍历数组内的id来删除多个数据库记录。
- public interface OmsCartMapper {
- int deleteCartsByIds(Long[] ids);
- }
- <delete id="deleteCartsByIds">
- delete
- from mall_oms.oms_cart
- where
- id in
- <foreach collection="array" item="id" separator="," open="(" close=")">
- #{id}
- foreach>
- delete>
collection="array" 要迭代循环的属性名
item="id" 作用为给遍历的对象起个别名,不一定为id
separator="," 在in中每个元素都必须用逗号隔开 in(id1,id2,id3.......)
open="(" close=")" in 的元素需要括号括起来 in(id1,id2,id3.......)
八、动态SQL语句
- <update id="updateOrderById">
- update mall_oms.oms_order
- <set>
- <if test="contactName!=null">
- contact_name=#{contactName}
- if>
- <if test="state!=null">
- state=#{state}
- if>
- <if test="tag!=null">
- tag=#{tag}
- if>
- set>
- update>
if标签可以用来对传给执行的SQL做判断是否为空值,而判断是否执行
九、Mybatis中 < 小于号不能使用的问题
在Mybatis中需要做判断时使用比较符会报错因为含有歧义

需要写成下面这个样子
- <select id="selectTimes" resultMap="OrderListMapper">
- select oo.id,
- where user_id = #{userId}
- and oo.gmt_create > #{startTime}
- and oo.gmt_create < #{endTime}
- order by oo.gmt_modified;
- select>
在Mybatis中 > 转义为 > 在Mybatis中 < 转义为 <