zoukankan      html  css  js  c++  java
  • 10-动态SQL语句

    一、 -if

    当你要查询的参数不确定时:参数可能只有username或者password或者有多个甚至什么都没有

    test 类

        @Test
        public void testFindByCondition(){
            User u=new User();
            u.setUsername("醉人");
            List<User> users=userMapping.findUserByCondition(u);
            for (User user:users){
                System.out.println(user);
            }
        }
    

    mapping.xml(大小写、名称一致很重要)

        <!--根据条件查询-->
        <select id="findUserByCondition" resultType="domain.User">
            select *from user where 1=1
            /*username应该与实体表中的名字一致,包括大小写*/
            <if test="username!=null">
            /*#{username} 应该与实体表中的名字一致,包括大小写*/
                and username=#{username}
            </if>
            <if test="id!=null">
                and id =#{id}
            </if>
        </select>
    

    二、 -where

        <select id="findUserByCondition" resultType="domain.User">
            select *from user
            <where>
                <if test="username!=null">
                    and username=#{username}
                </if>
                <if test="id!=null">
                    and id=#{id}
                </if>
            </where>
        </select>
    

    用 where 的话比只有 if 的 sql 语句更简洁

    三、 -foreach

    select *from user where id in(1,2)

        <select id="findUserInIds" resultType="domain.User">
            select *from user
            <where>
                <if test="list !=null and list.size()>0">
                    <foreach collection="list" item="item" open="and id in(" close=")" separator=",">
                        #{item}
                    </foreach>
                </if>
            </where>
        </select>
    
        @Test
        public void testFindUserInIds(){
            ArrayList<Integer> list=new ArrayList<Integer>();
            list.add(1);
            list.add(2);
    
            List<User> users=userMapping.findUserInIds(list);
            for (User user:users){
                System.out.println(user);
            }
        }
    

    扩展:sql语句很多重复怎么办?

        <sql id="defaultUser">
            select *from user
        </sql>
    

    调用

    注意:如果后面还要添加语句,上面的 sql 语句后面不要添加分号

        <select id="findAll" resultType="domain.User">
            <include refid="defaultUser"/>
            /*select *from user;*/
        </select>
    
  • 相关阅读:
    常见协议及默认的端口号
    超级简单的防止表单重复提交
    Spring的IOC和AOP的作用
    通向财富自由之路一
    AngularJS2.0的特性
    Charles设置断点
    JMeter参数化之csv data set config常见的错误
    Jmeter的几种参数化方式
    java中关于String对象的解析
    题目2:数组中重复的数字
  • 原文地址:https://www.cnblogs.com/zuiren/p/11406127.html
Copyright © 2011-2022 走看看