文档章节

mybatis文件中SQL总结

bithup
 bithup
发布于 2017/05/22 18:33
字数 1547
阅读 100
收藏 2

头部

<?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>标签

<mapper namespace="com.xgh.sportsite.dao.read.IActivityDaoR"> 
</mapper>

实体类与表的映射<resultMap>

<resultMap id="activity" type="com.xgh.sportsite.entity.Activity">

通过resultMap中的id的值确定映射关系,一个文件中是否可以有多个resultMap

<id property="id" column="id" javaType="Long"/>

<result property="unitId" column="unit_id" javaType="long" jdbcType="BIGINT"/>

表中的id属性是固定的

result有四个属性

四种语句

select语句

<select id="getListPage" parameterType="hashmap" resultType="hashmap">

id与接口中的方法名相同,

parameterType的取值有hashmap(此处hashmap因该是框架自己定义的或在某个地方定义过,用hashmap代替HashMap)、基本数据类型(java.lang.Long)、自定义类。一般插入和删除操作使用Long和自定义类型,查询操作使用hashmap类型。

返回结果使用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>

 

© 著作权归作者所有

上一篇: Ubuntu使用笔记
下一篇: Java集合框架总结
bithup
粉丝 8
博文 101
码字总数 82172
作品 0
朝阳
程序员
私信 提问
Mybatis入门程序,根据id查询用户

1. 创建数据库(在源代码中给出) sqltable.sql:记录表结构 sqldata.sql:记录测试数据,在实际企业开发中,最后提供一个初始化数据脚本 数据库 JDBC传统程序问题总结 2. Mybatis框架 myba...

小小蒜头
2017/11/23
0
0
Mybatis总结

什么是Mybatis MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。iBATIS一词来源于“internet”和“abatis”...

u013043341
2017/07/30
0
0
史上最简单的 MyBatis 教程(三)

1 前言 在史上最简单的 MyBatis 教程(一、二)中,咱们已经初步体验了 MyBatis 框架的一些优秀的特性,例如在映射文件中书写自定义的 SQL 语句以及便捷的调用方式等等。为了能够更好的掌握 ...

qq_35246620
2017/02/02
0
0
mybatis--总结

1.mybatis简介 mybatis是一个基于java的持久层框架,支持普通sql查询/存储过程/对象映射,它使用xml配置或者注解配置来做映射,将普通java对象映射到数据库中。 2.mybatis功能分层 2.1api接口...

求是科技
2016/10/12
44
0
Mybatis常见的面试题总结

什么是Mybatis? 1. mybatis是一个半ORM框架,它内部封装了JDBC,开发时只需要关乎sql语句本身,不需要花费精力去处理驱动,创建连接,创建1statement等繁复过程。2. mybatis可以使用xml或注...

薛小二
05/28
275
0

没有更多内容

加载失败,请刷新页面

加载更多

rime设置为默认简体

转载 https://github.com/ModerRAS/ModerRAS.github.io/blob/master/_posts/2018-11-07-rime%E8%AE%BE%E7%BD%AE%E4%B8%BA%E9%BB%98%E8%AE%A4%E7%AE%80%E4%BD%93.md 写在开始 我的Arch Linux上......

zhenruyan
今天
5
0
简述TCP的流量控制与拥塞控制

1. TCP流量控制 流量控制就是让发送方的发送速率不要太快,要让接收方来的及接收。 原理是通过确认报文中窗口字段来控制发送方的发送速率,发送方的发送窗口大小不能超过接收方给出窗口大小。...

鏡花水月
今天
10
0
OSChina 周日乱弹 —— 别问,问就是没空

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @tom_tdhzz :#今日歌曲推荐# 分享容祖儿/彭羚的单曲《心淡》: 《心淡》- 容祖儿/彭羚 手机党少年们想听歌,请使劲儿戳(这里) @wqp0010 :周...

小小编辑
今天
1K
11
golang微服务框架go-micro 入门笔记2.1 micro工具之micro api

micro api micro 功能非常强大,本文将详细阐述micro api 命令行的功能 重要的事情说3次 本文全部代码https://idea.techidea8.com/open/idea.shtml?id=6 本文全部代码https://idea.techidea8....

非正式解决方案
今天
5
0
Spring Context 你真的懂了吗

今天介绍一下大家常见的一个单词 context 应该怎么去理解,正确的理解它有助于我们学习 spring 以及计算机系统中的其他知识。 1. context 是什么 我们经常在编程中见到 context 这个单词,当...

Java知其所以然
昨天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部