mybatis扩展联合查询条件

在实际开发,一般都用mybatis generator插件,还有谁自己一行一行的写的吗?
业务逻辑最重要mybatis generator插件生成的mapper文件,不过mybatis generator插件生成针对单表的比较适合,但是联表查询就有些麻烦了。
1 自动生成的Example_Where_Clause

<sql id="Example_Where_Clause">
    <!--
      WARNING - @mbggenerated
      This element is automatically generated by MyBatis Generator, do not modify.
      This element was generated on Fri Sep 18 12:09:11 CST 2015.
    -->
    <where>
      <foreach collection="oredCriteria" item="criteria" separator="or">
        <if test="criteria.valid">
          <trim prefix="(" prefixOverrides="and" suffix=")">
            <foreach collection="criteria.criteria" item="criterion">
              <choose>
                <when test="criterion.noValue">
                  and ${criterion.condition}
                </when>
                <when test="criterion.singleValue">
                  and ${criterion.condition} #{criterion.value}
                </when>
                <when test="criterion.betweenValue">
                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
                </when>
                <when test="criterion.listValue">
                  and ${criterion.condition}
                  <foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
                    #{listItem}
                  </foreach>
                </when>
              </choose>
            </foreach>
          </trim>
        </if>
      </foreach>
    </where>
  </sql>

2 扩展的Example_Where_Clause_Udf
增加一个扩展的查询条件,扩展规则:1.将注释去掉,去掉注释,是因为mybatis generator插件可以重复生成,去掉注释后就不会覆盖你自己定义的代码。2.讲where去掉。3.将trim去掉。4.增加别名,ucsPermission是表别名。

<sql id="Example_Where_Clause_Complex">
		<foreach collection="ucsPermissionExample.oredCriteria" item="criteria" separator="or">
			<if test="criteria.valid">
				<foreach collection="criteria.criteria" item="criterion">
					<choose>
						<when test="criterion.noValue">
                  and ucsPermission.${criterion.condition}
						</when>
						<when test="criterion.singleValue">
                  and ucsPermission.${criterion.condition} #{criterion.value}
						</when>
						<when test="criterion.betweenValue">
                  and ucsPermission.${criterion.condition} #{criterion.value} and #{criterion.secondValue}
						</when>
						<when test="criterion.listValue">
                  and ucsPermission.${criterion.condition}
							<foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
                    #{listItem}
							</foreach>
						</when>
					</choose>
				</foreach>
			</if>
		</foreach>
	</sql>

3 联表自定义的example实例
其中UcsUserExample 和UcsPermissionExample 就是mybatis generator自动生成的example。

public class UcsUserPermissionExample {
	private UcsUserExample ucsUserExample;
	private UcsPermissionExample ucsPermissionExample;
	
	public UcsUserPermissionExample(){
		this.ucsUserExample = new UcsUserExample();
		this.ucsPermissionExample = new UcsPermissionExample();
	}
	
	public UcsUserExample getUcsUserExample() {
		return ucsUserExample;
	}
	public void setUcsUserExample(UcsUserExample ucsUserExample) {
		this.ucsUserExample = ucsUserExample;
	}
	public UcsPermissionExample getUcsPermissionExample() {
		return ucsPermissionExample;
	}
	public void setUcsPermissionExample(UcsPermissionExample ucsPermissionExample) {
		this.ucsPermissionExample = ucsPermissionExample;
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

warrah

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值