头部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>