第一种:使用where标签
<select id="***" resultMap="BaseResultMap" parameterType="java.util.Map">
select t.* from 表名 t
<where>
<if test=" 传进来的字段 != null and 传进来的字段 != ''">
and t.字段 like '%${传进来的字段}%'
</if>
<if test="传进来的字段 != null and 传进来的字段 != ''">
and t.ASSET_TYPE like '%${assetType}%'
</if>
</where>
</select>
Mybatis中where 标签知道只有在一个以上的if条件有值的情况下才去插入“where”子句,若最后的内容是“and”或“or”开头的,where 标签会知道如何将他们去除
第二种:使用trim标签
<select id="***" resultMap="BaseResultMap" parameterType="java.util.Map">
select t.* from 表名 t
<trim prefix="where" prefixOverrides="and|or">
<if test=" 传进来的字段 != null and 传进来的字段 != ''">
and t.字段 like '%${传进来的字段}%'
</if>
<if test="传进来的字段 != null and 传进来的字段 != ''">
and t.ASSET_TYPE like '%${assetType}%'
</if>
</trim>
</select>
Mybatis中trim是更灵活的去处多余关键字的标签,他可以实现where的效果
1、新增
出入一个list,list里面可以为bean,也可以为map类型,判断的时候区分大小写;此处判断了每个字段是否为空
需注意,date,timestamp类型,不能进行item.dealdate !=''
此种判断
<insert id="insertBatch" parameterType="java.util.List">
<foreach collection="list" item="item" index="index" separator="union all" >
insert into POS_CHECK_DATA(
<if test=" item.businessfrom != null and item.businessfrom !=''"> businessfrom, </if>
<if test=" item.dealdate != null and item.dealdate !=''"> dealdate, </if>
<if test=" item.dealtime != null and item.dealtime !=''"> dealtime, </if>
<if test=" item.expno != null and item.expno !=''"> expno, </if>
<if test=" item.exptype != null and item.exptype !=''"> exptype, </if>
<if test=" item.ordercod != null and item.ordercod !=''"> ordercod, </if>
<if test=" item.goodcod != null and item.goodcod !=''"> goodcod, </if>
<if test=" item.expcod != null and item.expcod !=''"> expcod, </if>
<if test=" item.paytype != null and item.paytype !=''"> paytype, </if>
<if test=" item.countdate != null and item.countdate !=''"> countdate, </if>
<if test=" item.countcod != null and item.countcod !=''"> countcod, </if>
<if test=" item.cardfee != null and item.cardfee !=''"> cardfee, </if>
<if test=" item.cardno != null and item.cardno !=''"> car