頭部java
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
最外層<mapper>標籤git
<mapper namespace="com.xgh.sportsite.dao.read.IActivityDaoR">
</mapper>
實體類與表的映射<resultMap>sql
<resultMap id="activity" type="com.xgh.sportsite.entity.Activity">
經過resultMap中的id的值肯定映射關係,一個文件中是否能夠有多個resultMapmybatis
<id property="id" column="id" javaType="Long"/> <result property="unitId" column="unit_id" javaType="long" jdbcType="BIGINT"/>
表中的id屬性是固定的app
result有四個屬性框架
四種語句ide
select語句url
<select id="getListPage" parameterType="hashmap" resultType="hashmap">
id與接口中的方法名相同,spa
parameterType的取值有hashmap(此處hashmap因該是框架本身定義的或在某個地方定義過,用hashmap代替HashMap)、基本數據類型(java.lang.Long)、自定義類。通常插入和刪除操做使用Long和自定義類型,查詢操做使用hashmap類型。code
返回結果使用resultType或resultMap。resultMap的取值通常是hashmap,可用於返回多表關聯查詢的結果;resultType用於返回實體類。
<sql>標籤能夠將須要查詢的字段列出來,儘可能避免使用select *
<sql id="Base_Column_List"> id, member_id, kind, context, remart, status, create_date, update_date, abopt, data_1, data_2, data_3, data_4 </sql>
和
<include refid="Base_Column_List" />
結合使用
查詢中的一些條件判斷
IFNULL(m.nick_name,'')AS nickName
在select語句中,若是爲空就返回」「
status是關鍵字,列名若是爲status需加上撇號``
<if>標籤 test條件
<if test="kind==1"> AND t.member_id = #{memberId} </if>
order by 默認升序,desc表示降序
limit
limit ${(page-1)*pageSize},${pageSize};
能夠在${}表達式中進行計算
<trim>標籤
<trim prefix="WHERE" prefixOverrides="AND |OR ">
鏈接查詢 left/right join on
LEFT JOIN tb_order o ON cvt.order_id = o.id
模糊查詢 :like後面的條件爲何要這麼寫
<if test="venueName!=null and venueName!='' "> AND cv.venue_name like '%${venueName}%' </if>
UNION(select ...)
UNION()
一個mapper文件有兩個resultMap,注意type的值也能夠是java.util.Map
<resultMap type="com.xgh.sportsite.entity.FileData" id="fileDataMap"> <result property="id" column="id" javaType="long" jdbcType="BIGINT" /> <result property="nid" column="nid" javaType="long" jdbcType="BIGINT" /> <result property="instId" column="inst_id" javaType="long" jdbcType="BIGINT" /> <result property="instNid" column="inst_nid" javaType="long" jdbcType="BIGINT" /> <result property="instCode" column="inst_code" javaType="string" jdbcType="VARCHAR" /> <result property="unitId" column="unit_id" javaType="long" jdbcType="BIGINT" /> <result property="unitNid" column="unit_nid" javaType="long" jdbcType="BIGINT" /> <result property="unitCode" column="unit_code" javaType="string" jdbcType="VARCHAR" /> <result property="dataCode" column="data_code" javaType="string" jdbcType="VARCHAR" /> <result property="dataType" column="data_type" javaType="int" jdbcType="INTEGER" /> <result property="dataId" column="data_id" javaType="long" jdbcType="BIGINT" /> <result property="dataVersion" column="data_version" javaType="int" jdbcType="INTEGER" /> <result property="path" column="path" javaType="string" jdbcType="VARCHAR" /> <result property="relativePath" column="relative_path" javaType="string" jdbcType="VARCHAR" /> <result property="fileName" column="file_name" javaType="string" jdbcType="VARCHAR" /> <result property="oldName" column="old_name" javaType="string" jdbcType="VARCHAR" /> <result property="fileSize" column="file_size" javaType="long" jdbcType="BIGINT" /> <result property="fileSuffix" column="file_suffix" javaType="string" jdbcType="VARCHAR" /> <result property="status" column="status" javaType="int" jdbcType="INTEGER" /> <result property="createDate" column="create_date" javaType="date" jdbcType="TIMESTAMP" /> <result property="ord" column="ord" javaType="int" jdbcType="INTEGER" /> <result property="type" column="type" javaType="int" jdbcType="INTEGER" /> </resultMap> <resultMap type="java.util.Map" id="fileDataMap2"> <result property="ID" column="id" javaType="long" jdbcType="BIGINT" /> <result property="NID" column="nid" javaType="long" jdbcType="BIGINT" /> <result property="INST_ID" column="inst_id" javaType="long" jdbcType="BIGINT" /> <result property="INST_NID" column="inst_nid" javaType="long" jdbcType="BIGINT" /> <result property="INST_CODE" column="inst_code" javaType="string" jdbcType="VARCHAR" /> <result property="UNIT_ID" column="unit_id" javaType="long" jdbcType="BIGINT" /> <result property="UNIT_NID" column="unit_nid" javaType="long" jdbcType="BIGINT" /> <result property="UNIT_CODE" column="unit_code" javaType="string" jdbcType="VARCHAR" /> <result property="DATA_CODE" column="data_code" javaType="string" jdbcType="VARCHAR" /> <result property="DATA_TYPE" column="data_type" javaType="int" jdbcType="INTEGER" /> <result property="DATA_ID" column="data_id" javaType="long" jdbcType="BIGINT" /> <result property="DATA_VERSION" column="data_version" javaType="int" jdbcType="INTEGER" /> <result property="PATH" column="path" javaType="string" jdbcType="VARCHAR" /> <result property="RELATIVE_PATH" column="relative_path" javaType="string" jdbcType="VARCHAR" /> <result property="FILE_NAME" column="file_name" javaType="string" jdbcType="VARCHAR" /> <result property="OLD_NAME" column="old_name" javaType="string" jdbcType="VARCHAR" /> <result property="FILE_SIZE" column="file_size" javaType="long" jdbcType="BIGINT" /> <result property="FILE_SUFFIX" column="file_suffix" javaType="string" jdbcType="VARCHAR" /> <result property="STATUS" column="status" javaType="int" jdbcType="INTEGER" /> <result property="CREATE_DATE" column="create_date" javaType="date" jdbcType="TIMESTAMP" /> <result property="ORD" column="ord" javaType="int" jdbcType="INTEGER" /> <result property="TYPE" column="type" javaType="int" jdbcType="INTEGER" /> </resultMap>
選擇當前日期
YEAR ( from_days(datediff(now(), c.birthday)) ) AS age,
遍歷集合
<if test="type ==1"> AND type = #{type} AND data_id IN <foreach collection="ids" item="id" open="(" close=")" separator=","> #{id} </foreach> </if>
查詢條件中有多個or
<if test="unitKind==2"> AND (unit_type = 10 OR unit_type=11 OR unit_type = 12 ) </if>
寫操做三種語句
<insert id="add" parameterType="com.xgh.sportsite.entity.Activity"> INSERT INTO tb_activity (id,unit_id,user_id,activity_name,activity_type,activity_organizer,activity_count,activity_address,sport_id,venue_id,activity_price,activity_introduce,activity_contacts,contacts_phone,activity_path,activity_real_path,declares,is_recommend,is_free,start_date,end_date,enroll_date,create_date,update_date,ord,is_check,status,data_1,data_2,data_3,data_4,data_5,data_6,data_7,data_8,data_9,data_10,data_11) VALUES (#{id},#{unitId},#{userId},#{activityName},#{activityType},#{activityOrganizer},#{activityCount},#{activityAddress},#{sportId},#{venueId},#{activityPrice},#{activityIntroduce},#{activityContacts},#{contactsPhone},#{activityPath},#{activityRealPath},#{declares},#{isRecommend},#{isFree},#{startDate},#{endDate},#{enrollDate},#{createDate},#{updateDate},#{ord},#{isCheck},#{status},#{data1},#{data2},#{data3},#{data4},#{data5},#{data6},#{data7},#{data8},#{data9},#{data10},#{data11}) </insert>
<update id="update" parameterType="com.xgh.sportsite.entity.Activity"> UPDATE tb_activity SET unit_id = #{unitId}, user_id = #{userId}, activity_name = #{activityName}, activity_type = #{activityType}, activity_organizer = #{activityOrganizer}, activity_count = #{activityCount}, activity_address = #{activityAddress}, sport_id = #{sportId}, venue_id = #{venueId}, activity_price = #{activityPrice}, activity_introduce = #{activityIntroduce}, activity_contacts = #{activityContacts}, contacts_phone = #{contactsPhone}, activity_path = #{activityPath}, activity_real_path = #{activityRealPath}, declares = #{declares}, is_recommend = #{isRecommend}, is_free = #{isFree}, start_date = #{startDate}, end_date = #{endDate}, enroll_date = #{enrollDate}, create_date = #{createDate}, update_date = #{updateDate}, ord = #{ord}, is_check = #{isCheck}, status = #{status}, data_1 = #{data1}, data_2 = #{data2}, data_3 = #{data3}, data_4 = #{data4}, data_5 = #{data5}, data_6 = #{data6}, data_7 = #{data7}, data_8 = #{data8}, data_9 = #{data9}, data_10 = #{data10}, data_11 = #{data11} WHERE id = #{id} </update>
<update id="updateById" parameterType="com.xgh.sportsite.entity.ChildVenueCutting"> UPDATE tb_child_venue_cutting <set> <if test="childVenueId != null"> child_venue_id = #{childVenueId}, </if> <if test="orderId != null"> order_id = #{orderId}, </if> <if test="timePeriod != null"> time_period = #{timePeriod}, </if> <if test="status != null"> status = #{status}, </if> <if test="startDate != null"> start_date = #{startDate}, </if> <if test="endDate != null"> end_date = #{endDate}, </if> <if test="createDate != null"> create_date = #{createDate}, </if> <if test="updateDate != null"> update_date = #{updateDate}, </if> <if test="ord != null"> ord = #{ord}, </if> <if test="data1 != null"> data_1 = #{data1}, </if> <if test="data2 != null"> data_2 = #{data2}, </if> <if test="data3 != null"> data_3 = #{data3}, </if> <if test="data4 != null"> data_4 = #{data4}, </if> </set> WHERE id = #{id} </update>
<insert id="add" parameterType="com.xgh.sportsite.entity.ChildVenue"> <selectKey keyProperty="id" resultType="long" order="AFTER"> SELECT max(id) AS value from tb_child_venue </selectKey> INSERT INTO tb_child_venue (id,venue_name,sport_id,venue_no,parent_id,picture_url,pic_real_path,price,sales_price,unit,service_info,tips,ord,facility,is_recommend,capacity,status,create_date,update_date,data_1,data_2,data_3,data_4,data_5,data_6,data_7,data_8) VALUES (#{id},#{venueName},#{sportId},#{venueNo},#{parentId},#{pictureUrl},#{picRealPath},#{price},#{salesPrice},#{unit},#{serviceInfo},#{tips},#{ord},#{facility},#{isRecommend},#{capacity},#{status},#{createDate},#{updateDate},#{data1},#{data2},#{data3},#{data4},#{data5},#{data6},#{data7},#{data8}) </insert>
批量更新
<update id="batchUpdateByIdList" parameterType="java.util.List"> UPDATE tb_house set status=0,update_date=now() where id in <foreach collection="list" item="idItem" index="index" open="(" separator="," close=")"> #{idItem} </foreach> </update> <update id="batchUpdateList" parameterType="java.util.List"> <foreach collection="list" item="item" index="index" open="" close="" separator=";"> UPDATE tb_house <set> member_id = #{item.memberId}, `type` = #{item.type}, data_id = #{item.dataId}, create_date = #{item.createDate}, update_date = #{item.updateDate}, status = #{item.status}, data_1 = #{item.data1}, data_2 = #{item.data2}, data_3 = #{item.data3}, data_4 = #{item.data4} </set> where id=#{item.id} </foreach> </update> <update id="batchUpdateMap" parameterType="java.util.Map"> UPDATE tb_house SET type = #{type},status=-1 WHERE id IN <foreach collection="idList" index="index" item="idItem" open="(" separator="," close=")"> #{idItem} </foreach> </update> <update id="batchUpdateWithArray" parameterType="java.lang.String"> UPDATE tb_house set status=-1 where id in <foreach item="idItem" collection="array" open="(" separator="," close=")"> #{idItem} </foreach> </update>
批量插入
<insert id="addBatch" parameterType="com.xgh.sportsite.entity.Zone"> insert into tb_zone ( nid, code, name, pid, pcode, pre_fix, level, is_last, longitude, latitude, location, spell_name, fir_spell_name, ord, create_date, update_date, status, remark ) values <foreach collection="list" item="item" separator=","> ( #{item.nid,jdbcType=BIGINT}, #{item.code,jdbcType=VARCHAR}, #{item.name,jdbcType=VARCHAR}, #{item.pid,jdbcType=VARCHAR}, #{item.pcode,jdbcType=VARCHAR}, #{item.preFix,jdbcType=VARCHAR}, #{item.level,jdbcType=VARCHAR}, #{item.isLast,jdbcType=VARCHAR}, #{item.longitude,jdbcType=DOUBLE}, #{item.latitude,jdbcType=DOUBLE}, #{item.location,jdbcType=VARCHAR}, #{item.spellName,jdbcType=VARCHAR}, #{item.firSpellName,jdbcType=VARCHAR}, #{item.ord,jdbcType=BIGINT}, #{item.createDate,jdbcType=TIMESTAMP}, #{item.updateDate,jdbcType=TIMESTAMP}, #{item.status,jdbcType=INTEGER}, #{item.remark,jdbcType=VARCHAR} ) </foreach> </insert>