今天抽时间将mybatis 的动态sql 学习了一下,参照http://www.mybatis.org/mybatis-3/zh/dynamic-sql.html的文档,动态sql包括

  • if
  • choose (when, otherwise)
  • trim (where, set)
  • foreach

下面通过例子来一一介绍

一、动态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="com.thq.mybatis.dao.UserDynamicDao">
<select id="selectList" resultType="com.thq.mybatis.model.User">
select * from tb_user where true
<if test="id != null">
and id=#{id}
</if>
<choose>
<when test="name != null">
and name like #{name}
</when>
<otherwise>
AND true
</otherwise>

</choose>
</select>
<select id="selectListWhere" resultType="com.thq.mybatis.model.User">
select * from tb_user
<where>
<if test="id!= null">
and name=#{id}
</if>
<if test="name != null">
and name like #{name}
</if>

</where>
<!--
prefix:前缀覆盖并增加其内容
suffix:后缀覆盖并增加其内容
prefixOverrides:前缀判断的条件 和where是等价的
suffixOverrides:后缀判断的条件
<trim prefix="where" prefixOverrides="AND|OR" >
<if test="id!= null">
AND name=#{id}
</if>
<if test="name != null">
AND name LIKE #{name}
</if>
</trim>
-->
</select>
<update id="updateSet">
UPDATE tb_user
<set>
<if test="name != null ">name=#{name}</if>
</set>
WHERE id=#{id}
</update>
<!-- collection : array -->
<select id="selectListByIdsArray" resultType="com.thq.mybatis.model.User">
SELECT * FROM tb_user WHERE id in
<foreach item="item" index="index" collection="array" open="(" separator="," close=")">
#{item}
</foreach>
</select>
<!-- collection : list -->
<select id="selectListByIdsList" resultType="com.thq.mybatis.model.User">
SELECT * FROM tb_user WHERE id in
<foreach item="item" index="index" collection="list" open="(" separator="," close=")">
#{item}
</foreach>
</select>
<!-- collection: Dao 调用传入的参数为Map -->
<select id="selectListByIdsMap" resultType="com.thq.mybatis.model.User">
SELECT * FROM tb_user WHERE id in
<foreach item="item" index="index" collection="ids" open="(" separator="," close=")">
#{item}
</foreach>
</select>
</mapper>
二、dao调用接口(mapper接口)

package com.thq.mybatis.dao;

import java.util.List;
import java.util.Map;

import com.thq.mybatis.model.User;

public interface UserDynamicDao {

public List<User> selectList(User user);

public List<User> selectListWhere(User user);

public int updateSet(User user);

public List<User> selectListByIdsArray(Integer[] ids);

public List<User> selectListByIdsList(List<Integer> ids);

public List<User> selectListByIdsMap(Map<String,Object> ids);
}

经测试,各接口都输出指定的数据

完毕


更多相关文章

  1. Android---Volley请求天气接口JSON解析
  2. Android调用百度地图Web端接口,实现百度定位、导航
  3. 避免在Java接口中使用数组的3个理由
  4. 【Java笔记】——抽象类和接口
  5. C#/Java 调用WSDL接口及方法
  6. 第三部分:Android 应用程序接口指南---第二节:UI---第六章 对话框
  7. sc7731 Android 5.1 Camera 学习之二 framework 到 HAL接口整理
  8. [Unity3D]调用Android接口
  9. Android添加一个回调监听接口

随机推荐

  1. Android中R.java没有自动生成解决方案
  2. Android Binder简介
  3. Android 根文件系统分析
  4. 优秀的Android开源软件
  5. UI控件之显示文本控件TextView(上)
  6. 研究了有一个月android下手机录制视频做
  7. Android—android与js交互以及相互传参
  8. 登录时旋转等待效果
  9. Android 博客目录整理
  10. 从NDK在非Root手机上的调试原理探讨Andro