今天整理了一下在项目中经常用到的mybatis的xml文件的sql语句:

读者:有sql基础。

<?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 namespace="mapper接口路径">
<!-- 假设一下的state为表中的字段 -->
<!-- 表的全部字段 -->
<sql id="selectId">
表的全部字段-->select * from table_name中的*
</sql>
<!-- 批量插入sql语句 -->
<insert id="***">
insert into table_name (columnName1,columnName2....)
values
<foreach collection="list" item="item" index="index" separator=",">
(#{item.columnName1},#{item.columnName2}....)
</foreach>
</insert>
<!-- if语句sql -->
<select id="***" parameterType="java.util.HashMap" resultType="java.lang.Integer">
select count(1) from table_name where 1=1
<if test="state != 1">
and state=#{state}
</if>
</select>
<!-- where语句sql -->
<select id="***" parameterType="参数类型" resultType="java.lang.Intege">
select count(1) from table_name
<where>
<if test="state != 1">
and state=#{state}
</if>
</where>
</select>
<!-- choose语句sql
注:choose语句中的when是只要满足一个条件之后就放弃继续比较了,比较方式同Java中的Switch语句类似。
-->
<select id="***" parameterType="参数类型" resultType="java.lang.Integer">
select <include refid="selectId" /> from table_name where 1=1
<choose>
<when test="state != 1">and state=#{state}</when>
<otherwise>and state=0</otherwise>
</choose>
</select>
<!-- set语句sql 更新
注:set元素可以被用于动态包含更新的列,而不包含不需更新的
这里,set 元素会动态前置 SET 关键字,而且也会消除任意无关的逗号,那也许在应用 条件之后来跟踪定义的值。
-->
<update id="***">
update table_name
<set>
<if test="state != 1">state=#{state},</if>
<if test="state == 1">state=0</if>
</set>
where id=#{id}
</update> <!-- resultMap
MyBatis的ResultMap使用方法,对象关联写法:http://blog.csdn.net/aya19880214/article/details/41960661
-->
<resultMap id="groupMap" type="java.lang.String">
<result javaType="String" column="groupIds" property="groupIds"></result>
</resultMap>
<resultMap id="reportMap" type="java.util.Map">
<result javaType="String" column="channelName" property="channelName"></result>
<result javaType="String" column="channelPhone" property="channelPhone"></result>
<result javaType="String" column="channelGroup" property="channelGroup"></result>
....
</resultMap>
<select id="queryChannelMarketingReport" resultMap="groupMap,reportMap" statementType="CALLABLE">
CALL ChannelManagerMarketing(#{groupID},#{onTime},#{offTime})
</select>
<!-- mapper接口中的方法 注意返回类型List<List<Map<String,Object>>>
List<List<Map<String,Object>>> queryChannelMarketingReport(@Param("groupID") String groupID, @Param("onTime") String onTime, @Param("offTime") String offTime);
--> <!-- parameterMap用法
MYBATIS中resultMap和parameterMap的使用:http://blog.csdn.net/aquarius_gamus/article/details/37704615
-->
</mapper>

供有需要的参考。

MYBATIS常用的sql事例的更多相关文章

  1. SpringBoot + MyBatis(注解版),常用的SQL方法

    一.新建项目及配置 1.1 新建一个SpringBoot项目,并在pom.xml下加入以下代码 <dependency> <groupId>org.mybatis.spring ...

  2. MyBatis - 常用标签与动态Sql

    MyBatis常用标签 ● 定义sql语句:select.insert.delete.update ● 配置JAVA对象属性与查询结构及中列明对应的关系:resultMap ● 控制动态sql拼接:i ...

  3. 我常用的插件之“Mybatis Log plugin”sql日志格式转化

    前言 今天重新装了IDEA2020,顺带重装了一些插件,毕竟这些插件都是习惯一直在用,其中一款就是Mybatis Log plugin,按照往常的思路,在IDEA插件市场搜索安装,艹,眼睛一瞟,竟然收 ...

  4. MyBatis框架——动态SQL、缓存机制、逆向工程

    MyBatis框架--动态SQL.缓存机制.逆向工程 一.Dynamic SQL 为什么需要动态SQL?有时候需要根据实际传入的参数来动态的拼接SQL语句.最常用的就是:where和if标签 1.参考 ...

  5. Mybatis 常用注解

    Mybatis常用注解对应的目标和标签如表所示: 注解 目标 对应的XML标签 @CacheNamespace 类 <cache> @CacheNamespaceRef 类 <cac ...

  6. java web(七): mybatis的动态sql和mybatis generator自动生成pojo类和映射文件

    前言: MyBatis 的强大特性之一便是它的动态 SQL.如果你有使用 JDBC 或其它类似框架的经验,你就能体会到根据 不同条件拼接 SQL 语句的痛苦.例如拼接时要确保不能忘记添加必要的空格,还 ...

  7. MyBatis 常用写法

    MyBatis 常用写法 1.forEach 循环   forEach 元素的属性主要有 item, idnex, collection, open, separator, close. collec ...

  8. Java-MyBatis:MyBatis 3 动态 SQL

    ylbtech-Java-MyBatis:MyBatis 3 动态 SQL 1.返回顶部 1. 动态 SQL MyBatis 的强大特性之一便是它的动态 SQL.如果你有使用 JDBC 或其它类似框架 ...

  9. 一分钟带你了解下MyBatis的动态SQL!

    MyBatis的强大特性之一便是它的动态SQL,以前拼接的时候需要注意的空格.列表最后的逗号等,现在都可以不用手动处理了,MyBatis采用功能强大的基于OGNL的表达式来实现,下面主要介绍下. 一. ...

随机推荐

  1. idea历史版本下载

    https://confluence.jetbrains.com/display/IntelliJIDEA/Previous+IntelliJ+IDEA+Releases

  2. Linux Centos安装及卸载Apache

    一.卸载 1.查看有没有安装apache,出现下面信息则安装过 [root@localhost ~]# rpm -qa|grep httpd httpd-2.2.15-53.el6.centos.x8 ...

  3. Java SpringMVC 定时任务

    1.web.xml 2.spring-mvc.xml <?xml version="1.0" encoding="UTF-8"?> <bean ...

  4. Python笔记·第十一章—— 函数 (二) 装饰器

    一 为何要用装饰器 有的时候写完一段代码,过段时间需要对它进行升级.添加一些新功能,但是如果要直接修改原来的代码会影响其他人的调用,所以就需要一个不修改源代码且不修改原函数的调用方式的东西又能为原函数 ...

  5. 【二十五】cookie与session学习总结

    一:cookie 1.创建cookie 关键字:setcookie 用于保存cookie 原理:当浏览器访问cookie.php页面时,我们的服务器就会以set-cookie的方式将cookie信息回 ...

  6. ES6数组及数组方法

    ES6数组可以支持下面的几种写法: (1)var [a,b,c] = [1,2,3]; (2)var [a,[[b],c]] = [1,[[2],3]]; (3)let [x,,y] = [1,2,3 ...

  7. iOS 多线程 简单学习NSThread NSOperation GCD

    1:首先简单介绍什么叫线程 可并发执行的,拥有最小系统资源,共享进程资源的基本调度单位. 共用堆,自有栈(官方资料说明iOS主线程栈大小为1M,其它线程为512K). 并发执行进度不可控,对非原子操作 ...

  8. iOS手机截屏使用

    .截屏 保存 .data //登录成功进行截屏 //截取屏幕大小 UIGraphicsBeginImageContext([[UIScreen mainScreen]bounds].size); [s ...

  9. ionic环境配置及问题

    ionic是什么? 其实就是一款用于开发web app的开源免费框架,和国产的MUI差不多. 官网:https://ionicframework.com/ 必备条件: 安装Node.js 安装Java ...

  10. CubeSuit+ ( CS+ for ca )

    作为瑞萨单片机的初学者,最先接触的当属它的IDE了,接下来我将分享一些我使用这款单片机的心得,以供大家参考. 我使用的是RL78F13系列R5F10BGE,那如何建立一个能使用的工程呢?相信大家在网络 ...