Mybatis学习(十二)mybatis理解动态sql及sql片段
2015-06-11 11:14
555 查看
在上面的文章的基础上我们做一下动态sql和sql片段
需求分析:
sql片段理解
详细设计:
代码实现
在User.xml做出修改
sql片段
sql片段的意思就是将sql的部分语句单独定义出来。然后在使用的时候引入。
修改User.xml看看什么是sql片段,和上面的文件进行比较。
看着两段代码就知道如何运用sql片段。
怎么实现 OR呢?
比如 where id=1 or id=3 or id=6
<if test="ids!=null">
<foreach collection="ids" item="userid" open=" and (" close=")" separator="or">
<!-- 遍历拼接的串 -->
id=#{id}
</foreach>
</if>
比如 where id in(1,3,6)
<if test="ids!=null">
<foreach collection="ids" item="userid" open=" and id in (" close=")" separator=",">
<!-- 遍历拼接的串 -->
#{id}
</foreach>
</if>
需求分析:
sql片段理解
详细设计:
代码实现
在User.xml做出修改
<?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="cn.bj.mybatis.model.IUserOperation"> <select id="findUserList" parameterType="cn.bj.mybatis.model.UserQueryVO" resultType="cn.bj.mybatis.model.UserCustom"> select * from t_user <!-- where可以自动去掉第一个条件的and --> <where> <if test="userCustom!=null"> <if test="userCustom.sex!=null and userCustom.sex!=''"> and t_user.sex=#{userCustom.sex} </if> <if test="userCustom.username!=null and userCustom.username!=''"> and t_user.username like '%${userCustom.username}%' </if> </if> </where> </select> </mapper>测试类还是上一章的那个Mybatistest,java
sql片段
sql片段的意思就是将sql的部分语句单独定义出来。然后在使用的时候引入。
修改User.xml看看什么是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="cn.bj.mybatis.model.IUserOperation"> <select id="findUserList" parameterType="cn.bj.mybatis.model.UserQueryVO" resultType="cn.bj.mybatis.model.UserCustom"> select * from t_user <!-- where可以自动去掉第一个条件的and --> <where> <!-- sql片段引入 --> <include refid="query_user_where"></include> </where> </select> <!-- sql片段 --> <sql id="query_user_where"> <if test="userCustom!=null"> <if test="userCustom.sex!=null and userCustom.sex!=''"> and t_user.sex=#{userCustom.sex} </if> <if test="userCustom.username!=null and userCustom.username!=''"> and t_user.username like '%${userCustom.username}%' </if> </if> </sql> </mapper>
看着两段代码就知道如何运用sql片段。
怎么实现 OR呢?
比如 where id=1 or id=3 or id=6
<if test="ids!=null">
<foreach collection="ids" item="userid" open=" and (" close=")" separator="or">
<!-- 遍历拼接的串 -->
id=#{id}
</foreach>
</if>
比如 where id in(1,3,6)
<if test="ids!=null">
<foreach collection="ids" item="userid" open=" and id in (" close=")" separator=",">
<!-- 遍历拼接的串 -->
#{id}
</foreach>
</if>
相关文章推荐
- 解决64位操作系统下运行psql的问题
- mysql导出表结构不导出数据
- SQL2000错误用户已经存在
- 两种mysql文件安装方式——win7 32位OS
- SQL2000未能找到存储过程_master.dbo.xp_regread
- 用Redis bitmap统计活跃用户、留存
- sql server常用语句
- Mysql 5.6主从同步
- 影响Mysql关闭的参数innodb_fast_shutdown
- 什么是Redis
- Redis消息通知系统的实现
- Oracle存储过程基本语法
- mysql按照时间段内 每天统计
- mongodb
- 数据库设计模式笔记
- mysql集群 MySQL Cluster
- 【Leetcode Database】Employees Earning More Than Their Managers
- sql 拼接
- Oracle Buffer Cache初步诊断调优
- oracle导入dmp文件命令