本文目录
项目中经常会用到的sql语句有:
一、insert语句
<!--保存用户信息-->
<insert id="save">
insert into mainsite_product_message
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="customerName != null and customerName != ''">
customer_name,
</if>
<if test="customerPhone != null and customerPhone != ''">
customer_phone,
</if>
<if test="customerEmail != null and customerEmail != ''">
customer_email,
</if>
<if test="createTime != null">
create_time,
</if>
<if test="customerStatus != null and customerStatus != ''">
customer_status,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="customerName != null and customerName != ''">
#{customerName},
</if>
<if test="customerPhone != null and customerPhone != ''">
#{customerPhone},
</if>
<if test="customerEmail != null and customerEmail != ''">
#{customerEmail},
</if>
<if test="createTime != null">
#{createTime},
</if>
<if test="customerStatus != null and customerStatus != ''">
#{customerStatus},
</if>
</trim>
</insert>
<!--修改用户信息-->
<update id="update">
</update>
<!--批量更改客户状态-->
<update id="updateStatus">
update mainsite_product_message set customer_status = 1 where id in
<foreach collection="array" item="id" open="(" separator="," close=")" index="index">
#{id}
</foreach>
</update>
<!--根据主键删除留言,物理删除-->
<delete id="deleteByPrimaryKey">
delete from mainsite_product_message where id = #{id}
</delete>
<!--查询留言列表-->
<select id="selectByCondition"
resultType="com.uiotsoft.mainsite.module.productmessage.entity.ProductMessage">
select
id as id,
site_id as siteId,
site_name as siteName,
customer_name as customerName,
customer_phone as customerPhone,
customer_email as customerEmail,
product_want as productWant,
create_time as createTime,
customer_status as customerStatus,
search_keyword as searchKeyword
from mainsite_product_message
<trim prefix="WHERE (" suffix=")" prefixOverrides="AND|OR">
<if test="customerName != null and customerName != ''">
customer_name like CONCAT('%', #{customerName}, '%')
</if>
<if test="customerPhone != null and customerPhone != ''">
and customer_phone = #{customerPhone}
</if>
<if test="createTime != null">
and create_time = #{createTime}
</if>
<if test="customerEmail != null and customerEmail != ''">
and customer_email = #{customerEmail}
</if>
<if test="productWant != null and productWant != ''">
and product_want = #{productWant}
</if>
<if test="siteId != null and siteId != '' and siteId != 1">
and site_id = #{siteId}
</if>
<if test="siteName != null and siteName != ''">
and site_name = #{siteName}
</if>
<if test="customerStatus != null and customerStatus != ''">
and customer_status = #{customerStatus}
</if>
<if test="searchKeyword != null and searchKeyword != ''">
and search_keyword = #{searchKeyword}
</if>
</trim>
ORDER BY create_time DESC
</select>
<trim><choose><when></when><otherwise></otherwise></choose></trim>
二、select查询语句
<select id="selectByContentListBySiteIdAndCategoryIds" resultType="java.util.Map">
SELECT
c.*,
m.*,
u.avatar avatar,
u.username username
FROM
site_model_content c LEFT JOIN site_model_${tableName} m
ON
c.content_id = m.content_id
LEFT JOIN
t_sys_user u ON u.user_id = c.user_id
<trim prefix="WHERE (" suffix=")" prefixOverrides="AND|OR">
c.status=1
<if test="siteId!=null">
AND c.site_id = #{siteId}
</if>
<if test="categoryIds!=null">
AND
c.category_id in
<foreach item="item" index="index" collection="categoryIds" open="(" separator="," close=")">
#{item}
</foreach>
</if>
<if test='isRecommend!=null and isRecommend==1'>
AND
c.recommend = 1
</if>
<if test='whereParam!=null and valueParam!=null'>
AND m.${whereParam} = #{valueParam}
</if>
<if test='isPic!=null and isPic==1'>
AND
c.thumb!=''
</if>
<if test='isPic!=null and isPic==0'>
AND
c.thumb=''
</if>
<if test='siteType!=null'>
AND
c.site_type like CONCAT('%', #{siteType}, '%')
</if>
</trim>
<choose>
<when test="orderBy==1">
order by c.content_id
</when>
<when test="orderBy==2">
order by c.inputdate DESC
</when>
<when test="orderBy==3">
order by c.inputdate
</when>
<when test="orderBy==4">
order by c.updatedate DESC
</when>
<when test="orderBy==5">
order by c.updatedate
</when>
<when test="isHot==1">
order by c.view_num DESC
</when>
<otherwise>
order by c.content_id DESC
</otherwise>
</choose>
</select>
三、批量添加
<!-- 批量添加 -->
<insert id="insertMore" useGeneratedKeys="true" keyProperty="siteId">
INSERT INTO
t_cms_site(
site_name,
`domain`,
template,
is_mobile,
mobile_tpl,
status
)
values
<foreach item="item" collection="list" separator=",">
(#{item.siteName},#{item.domain},#{item.template},
#{item.isMobile},#{item.mobileTpl},#{item.status})
</foreach>
</insert>
四、与时间比较相关的
SELECT
count(*)
FROM
crm_contract
<where> isDel = 0
<if test="departmentId != null and departmentId != null">
and departmentId LIKE CONCAT(#{departmentId},'%')
</if>
<if test="directorAccount != null and directorAccount !='' ">
and directorAccount = #{directorAccount}
</if>
<if test="executeState != null and executeState != ''">
and executeState = #{executeState}
</if>
<if test="auditState != null and auditState != ''">
and auditState = #{auditState}
</if>
<if test="contractType != null and contractType != ''">
and contractType = #{contractType}
</if>
<if test="categoryId != null and categoryId != ''">
and categoryId = #{categoryId}
</if>
<if test="customerName != null and customerName != ''">
and customerName like CONCAT("%",#{customerName},"%")
</if>
<if test="director != null and director != ''">
and director like CONCAT("%",#{director},"%")
</if>
<if test="signUser != null and signUser != ''">
and signUser like CONCAT("%",#{signUser},"%")
</if>
<if test="startDate != null">
<![CDATA[ and DATE_FORMAT(endDate,"%Y-%m-%d") >= DATE_FORMAT(#{startDate},"%Y-%m-%d") ]]>
</if>
<if test="endDate != null">
<![CDATA[ and DATE_FORMAT(endDate,"%Y-%m-%d") <= DATE_FORMAT(#{endDate},"%Y-%m-%d")]]>
</if>
</where>
select
c.*
from crm_contract c left join crm_customer_info i on c.customerId =
i.customerId
<where>
c.isDel = 0
<if test="startDate != null and startDate != ''">
and c.endDate >= #{startDate}
</if>
<if test="endDate != null and endDate != ''">
and c.endDate <= #{endDate}
</if>
<if test="customerName != null and customerName != ''">
and c.customerName like CONCAT(#{customerName},"%")
</if>
<if test="director != null and director != ''">
and c.director like CONCAT(#{director},"%")
</if>
<if test="auditState != null and auditState != ''">
and c.auditState = #{auditState}
</if>
</where>
limit #{start},#{end}
拓展:
Mysql动态SQL语句标签:https://blog.csdn.net/weixin_44299027/article/details/103258305