美文网首页
mybatis的条件判断

mybatis的条件判断

作者: 别叫我小新 | 来源:发表于2018-09-06 23:19 被阅读0次
    <?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">
    
    <!-- namespace 命名空间 -->
    <mapper namespace="com.qianfeng.dynamic.Employee">
    
        <!-- 体现表和类之间的关系 -->
        <!-- 配置查询到的数据和实体类之间的映射关系 -->
        <!-- type实体类 包名+类名形式  id是resultMap的唯一标识-->
        <!-- 主配置中配置的别名,Person 通过<typeAlias>配置的 -->
        <resultMap type="Employee" id="empMap">
            <!-- 主键 -->
            <!-- property 实体类中的属性, column 表中的字段 -->
            <id property="id" column="id"/>
            
            <!-- 其他字段的映射关系 -->
            <result property="name" column="name"/>
            <result property="age" column="age"/>
            <result property="phone" column="phone"/>
            <result property="qq" column="qq"/>
        </resultMap>
        
        <insert id="add" parameterType="Employee">
            <!-- insert into employee(name, age, phone, qq) values(#{name}, #{age}, #{phone}, #{qq}) -->
            <!-- if 单条件判断, test中设置判断条件 -->
            insert into employee(
            <!--suffixOverrides 重写后缀 这样能吧最后这个逗号干掉 
                trim能设置前缀和后缀哦~~
             -->
            <trim suffixOverrides=",">
                <if test="name!=null">
                    name,
                </if>
                <if test="age!=null">
                    age,
                </if>
                <if test="phone!=null">
                    phone,
                </if>
                <if test="qq!=null">
                    qq
                </if>
                </trim>
            ) values(
            <trim suffixOverrides=",">
                <if test="name!=null">
                    #{name},
                </if>
                <if test="age!=null">
                    #{age},
                </if>
                <if test="phone!=null">
                    #{phone},
                </if>
                <if test="qq!=null">
                    #{qq},
                </if>
                </trim>
            )
        
        </insert>
        
        <insert id="add2" parameterType="Employee">
            insert into employee(
            <!-- choose when 多条件判断   这个不用写逗号了哦~~  一个条件成li了,其他条件就不再判断了 相当于if..else if..else...-->
                <choose>
                    <when test="name!=null">
                        name
                    </when>
                    <when test="age!=null">
                        age
                    </when>
                    <when test="phone!=null">
                        phone
                    </when>
                    <otherwise>
                        qq
                    
                    </otherwise>
                </choose>
            )values(
                <choose>
                    <when test="name!=null">
                        #{name}
                    </when>
                    <when test="age!=null">
                        #{age}
                    </when>
                    <when test="phone!=null">
                        #{phone}
                    </when>
                    <otherwise>
                        #{qq}
                    </otherwise>
                </choose>
            )
            
        </insert>
        
        <select id="find" parameterType="Employee" resultType="Employee">
            <!-- select * from employee where 1=1 and name=? and age=? -->
            
            select * from employee
            <where>
                <!-- 不用写1=1了 -->
                <!-- where标签可以将多余的标签去掉,比如and -->
                <if test="name!=null">
                    and name=${name}
                </if>
                <if test="age!=null">
                    and age=${age}
                </if>
                
            </where>
        
        </select>
        
        <update id="update" parameterType="Employee">
            <!-- update employee set name=?,age=?,phone=? where.. -->
            <!-- 哪些值不是null吧哪些值更新了 -->
            
            update employee
            <!-- 使用set也不用管这个逗号了,他自己会删掉他,哈哈哈 -->
            <set>
                <if test="name!=null">
                    name=#{name},
                </if>
                <if test="age!=null">
                    age=#{age},
                </if>
                <if test="phone!=null">
                    phone=#{phone},
                </if>
                <if test="qq!=null">
                    qq=#{qq},
                </if>
            </set>
            where id=#{id}
        </update>
        
        <!-- 指定多个id来删除数据  比如2,5,10-->
        <!-- 这里是列表形式的, key是list value是传来的列表 -->
        <delete id="deleteById" parameterType="list">
        <!-- 只要是id这这几个数的范围内的删除掉,,这!就是in!  好屌啊-->
            <!--delete from employee where id in (select id from employee where ...)-->
            delete from employee where id in
            <!-- collection就是要遍历的集合 
                 item就是遍历到的元素的变量名 
                 open/close 就是指定前面和后面包裹数据时使用的符号  
                 separator 遍历到的元素的分隔符
            -->
            <forech collection="list" item="eid" open="(" close=")" separator=",">
            
                #{eid}
            </forech>
            
            
        </delete>
        
        <!-- 指定多个id来删除数据  比如2,5,10-->
        <!-- sql中使用的参数,本质上会封装为map对象
            自定义类 key属性value设置的值
            数组,key值是array value是数组对象
            列表,key值数list, value是列表对象,
            
            这个传来的是个数组,是没办法接收的,只有用map,起始本质上就是给封装成了map,用array来找到数据
                 key值找到value array就是key值 value就是那个数组,
                 因为arry没有对应的支持,所以只能写map(value)
                 -->
        <delete id="deleteById2" parameterType="map">
        <!-- 只要是id这这几个数的范围内的删除掉,,这!就是in!  好屌啊-->
            <!--delete from employee where id in (select id from employee where ...)-->
            delete from employee where id in
            <!-- collection就是要遍历的集合 
                 item就是遍历到的元素的变量名 
                 open/close 就是指定前面和后面包裹数据时使用的符号  
                 separator 遍历到的元素的分隔符
            -->
            <forech collection="array" item="eid" open="(" close=")" separator=",">
            
                #{eid}
            </forech>
            
            
        </delete>
        
        
    </mapper>

    相关文章

      网友评论

          本文标题:mybatis的条件判断

          本文链接:https://www.haomeiwen.com/subject/jjnfgftx.html