這個標簽使用的有些少,但是想寫通用一點的sql時,用起來還是挺好的。
在后面的說明中,遇到一個坑,剛剛修改了一下,寫的多了才會遇見問題。
1.說明
<trim prefix="" suffix="" suffixOverrides="" prefixOverrides=""></trim>
prefix:在trim標簽內sql語句加上前綴。
suffix:在trim標簽內sql語句加上后綴。
prefixOverrides:指定去除多余的前綴內容
suffixOverrides:指定去除多余的后綴內容,如:suffixOverrides=",",去除trim標簽內sql語句多余的后綴","。
2.示例
在本示例中,因為在后面有三個字段,所以前面的都可加上逗號,也不會出現問題。
如果沒有這三個字段,前面第幾個開始不加逗號,說不准,這個時候,就需要使用suffixOverrides去除。
<insert id="save" useGeneratedKeys="true" keyProperty="id"> INSERT INTO t_contract_monitor <trim prefix="(" suffix=")" suffixOverrides=","> <if test="contractId != null"> contract_id, </if> <if test="contractNo != null"> contract_no, </if> <if test="merchantId != null"> merchant_id, </if> gmt_create, gmt_modify, is_deleted </trim> <trim prefix="VALUES (" suffix=")" suffixOverrides=","> <if test="contractId != null"> #{contractId,jdbcType=BIGINT}, </if> <if test="contractNo != null"> #{contractNo,jdbcType=VARCHAR}, </if> <if test="merchantId != null"> #{merchantId,jdbcType=BIGINT}, </if> now(), now(), 0 </trim> </insert>
3.另外說明
useGeneratedKeys="true" keyProperty="id"
當我們insert時,返回剛剛新增的id,可以加上上面的兩個屬性。
主要是在主鍵是自增的情況下,添加成功后可以直接使用主鍵值,其中keyProperty的值是對象的屬性值,不是數據庫表中的字段名
但是,需要有一些注意:
Long save = mcsContractBillTermRecordMapper.save(mcsContractBillTermRecord);
這個save是新增的個數,那新增id返回值在哪里呢,在mcsContractBillTermRecord中,自己get。