转:http://www.cnblogs.com/lixiujie/p/5766669.html

<resultMap>标签的使用:这个类似于hibernte用于映射我们创建的vo对象与数据库字段的对应。

关于具体的使用参考此博文:

http://blog.csdn.net/bear_wr/article/details/52383840

mybatis where标签的使用
  where后面跟查询条件 简化sql语句中判断条件的书写
    例:
      <select id="user" parameterType="user" resultType="User">
        select * from user 
          <where>
            <if test="id!=null and id!=''">
              id=#{id}
            </if>
            <if test="name!=null and name!=''">
              and name=#{name}
            </if>
            <if test="gender!=null and gender!=''">
              and gender=#{gender}
            </if>
          </where>
       </select>

  MyBatis会智能的把首个and 或 or 给忽略
    如果id为null 执行的sql语句为 :
      select * from user where name='xxx' and gender='xxx'

mybatis set标签的使用
  例:
    <update id="userUpdate" parameterType="user">
      update user 
        <set>
          <if test="id!=null and id!=''">
            id=#{id},
          </if>
          <if test="name!=null and name!=''">
            name=#{name},
          </if>
          <if test="gender!=null and gender!=''">
            gender=#{gender},
          </if>
        </set>
    </update>

如上片段假如都不为null的情况下执行SQL为: update user set id="xx",name='xxx',gender='xxx';
在如上sql中最后一个逗号会被set标记自动忽略不计

mybatis trim标签的使用
  trim 属性
  prefix:前缀
  suffix:后缀
  prefixOverrides:忽略第一个指定分隔符
  suffixOverrides:会略最后一个分隔符
例:
  1)

    <select id="user" parameterType="user" resultType="User">
      select * from user 
        <trim prefix="WHERE" prefixoverride="and | or">
          <if test="id!=null and id!=''">
            id=#{id}
          </if>
          <if test="name!=null and name!=''">
            and name=#{name}
          </if>
          <if test="gender!=null and gender!=''">
            and gender=#{gender}
          </if>
       </trim>
    </select>

如果id为null执行的sql语句为:
select * from user where name="xxx" and gender="xxx"

2)

  <update>
    update user 
      <trim prefix="set" suffixoverride=",">
        <if test="id!=null and id!=''">
          id=#{id},
        </if>
        <if test="name!=null and name!=''">
          name=#{name},
        </if>
        <if test="gender!=null and gender!=''">
          gender=#{gender}
        </if>
        </trim>
  </update>

如果gender为null 执行的sql语句为:
update user set id="xx",name="xx"

mybatis foreach标签的使用

可以利用<foreach>标签实现sql条件的循环,可完成类似批量的sql

  mybatis接受的参数分为:
    (1)基本类型(2)对象(3)List(4)数组(5)Map

  参数:
    collection:要循环的集合
    index:定一个名字,用于表示在迭代过程中,每次迭代到的位置
    item:集合中每一个元素进行迭代时的别名
    open:以什么开始
    close:以什么结束
    separator:循环内容之间以什么分隔 
例:
  1)批量添加
    <insert id="add" parameterType="List">
      insert into user(id,name,gender) values
        <foreach collection="list" item="user" open="(" close=")" separator=",">
          #{user.id},#{user.name},#{user.gender}
        </foreach>
    </insert>

    若list有两条数据 则执行的sql语句为:
      insert into user(id,name,gender) values ("1","张三","男"),("2","李四","女")

    mapper接口:
      void add(List<User> users);

2)批量删除
      <delete id="deleteUser" parameterType="array">
        delete from user where id in
          <foreach collection="array" item="id" open="(" close=")" separator=",">
            #{id}
          </foreach>
      </delete>

  如果有两条数据要删除 执行的sql语句为:
    delete from user where id in(1,2)

mybatis sql标签的使用

    通过sql片段达到代码重复利用
      例:
        <sql id="sqlcont">
          select count(*)
        </sql>

        <sql id="sqlselect">
          select * 
        </sql>
        <sql id="sqlcontent">
          from user
        </sql>
    

      <select id="findUser" parameterType="user" resultType="User">
        <include refid="sqlcont"/>
        <include refid="sqlcontent"/>
      </select>

 
 

mybatis <where>、<set>、<trim>、<sql>、<foreach>标签的使用的更多相关文章

  1. Mybatis foreach标签含义

    背景 考虑以下场景: InfoTable(信息表): Name Gender Age Score 张三 男 21 90 李四 女 20 87 王五 男 22 92 赵六 女 19 94 孙七 女 23 ...

  2. mybatis <forEach>标签的使用

    MyBatis<forEach>标签的使用 你可以传递一个 List 实例或者数组作为参数对象传给 MyBatis.当你这么做的时候,MyBatis 会自动将它包装在一个 Map 中,用名 ...

  3. MyBatis foreach标签遍历数组

    有时候开发中需要根据多个ID去查询,可以将ID封装为List或者数组然后使用MyBatis中的foreach标签构建in条件. 这里我将ID封装为String[]作为参数. <select id ...

  4. mybatis foreach标签

    一.批量插入数据 示例:添加订单商品表 1.模型层的相应代码 /** * 添加订单商品表 * @param ordergoods * @return */ public boolean addOrde ...

  5. MyBatis foreach标签的用法

    From<MyBatis从入门到精通> 一.foreach实现in集合 1.映射文件中添加的代码: <!-- 4.4 foreach用法 SQL语句有时会使用IN关键字,例如id i ...

  6. mybatis foreach标签的解释 与常用之处

    情景:查询数据库中文章的相关文章   文章为一个表 字段tags为相关文章字符串中间用','逗号进行啦分割 查询完一个文章后可以把tags字段构造为一个List<String> 然后利用这 ...

  7. Mybatis批量insert 返回主键值和foreach标签详解

    Mybatis批量insert 返回主键 Mybatis从3.3.1版本开始,支持批量插入后返回主键ID.首先对于支持自增主键的数据库使用useGenerateKeys和keyProperty,对于不 ...

  8. MyBatis的Mapper文件的foreach标签详解

    MyBatis的Mapper文件的foreach标签用来迭代用户传递过来的Lise或者Array,让后根据迭代来拼凑或者批量处理数据.如:使用foreach来拼接in子语句. 在学习MyBatis M ...

  9. mybatis的foreach标签

    今天写sql发现了一点问题,乱弄了好久算是搞定了.关于mybatis的批量插入使用foreach插入形式为: insert into role_privilege( role_id, privileg ...

随机推荐

  1. 学习笔记,99乘法表,嵌套while循环

    line = 0 #定义外循环初变量 while line < 9: #外循环判断语句 line += 1 #改变外循环初变量,避免陷入死循环 row = 0 #定义内循环初变量 while r ...

  2. windows10下git一些问题

    windows10下安装git 找不到ssh解决办法 解决办法是: 输入下列命令,一路回车 $ ssh-keygen -t rsa -C “邮箱地址” 若执行ssh-add /path/to/xxx. ...

  3. Python高级编程-使用SQLite

    SQLite是一种嵌入式数据库,它的数据库就是一个文件.由于SQLite本身是C写的,而且体积很小,所以,经常被集成到各种应用程序中,甚至在iOS和Android的App中都可以集成. Python就 ...

  4. PCB各层介绍及AD软件画PCB时的规则

    好久没画过板了,最近因为工作关系,硬件软件全部得自己来,不得不重新打开闲置很久的AltiumDesigner.以前做过点乱七八糟的笔记,本来想回头翻看一下,结果哪儿也找不到,估计已经被不小心删掉了.  ...

  5. Thunder团队第二周 - Scrum会议2

    Scrum会议2 小组名称:Thunder 项目名称:爱阅app Scrum Master:胡佑蓉 工作照片: 参会成员: 王航:http://www.cnblogs.com/wangh013/ 李传 ...

  6. java—连连看-实现封装

    1.封装 Chess.java package Linkup; /** * 棋子封装类 * * @author laixl * */ public class Chess { // 图片的 状态 // ...

  7. xml解析----java中4中xml解析方法(转载)

    转载:https://www.cnblogs.com/longqingyang/p/5577937.html 描述 XML是一种通用的数据交换格式,它的平台无关性.语言无关性.系统无关性.给数据集成与 ...

  8. Java中I/O流之缓冲流

    Java 中的缓冲流: 1. 缓冲流要“套接”在相应的节点流之上,对读写的数据提供了缓冲的功能,提高了读写的效率,同时增加了一些新的方法(带缓冲区的,显著减少对 IO 的读写次数,保护硬盘). 2. ...

  9. Java中的 toString 方法

    1. Object 类中定义有 public String toString() 方法,其返回值是 String 类型,描述当前对象的有关信息: 2. 在进行 String 与其它类型数据的连接操作时 ...

  10. python爬虫-使用xpath方法

    #coding=utf-8 import re from lxml import etree import requests response = requests.get("http:// ...