zoukankan      html  css  js  c++  java
  • day03-MyBatis的动态SQL语句查询

    场景一:

    例如当我们想实现这样的查询的时候之前的操作貌似满足不了我们。

     场景二:

    还有些时候我们如果输入的信息越多满足要求的就越多,所查找出来的用户就越少

    当我们之输入姓名的时候可能查找出10个人,当再输入性别的时候可能人数就会减少一半

    mybatis为了解决例如上面的问题引入了一些标签例如:

    <if></if>
    <where></where>
    <foreach></foreach>
    <when></when>
    <set></set>

    场景一的解决:

    UserDao中的方法:

     

     QueryVo实体类:

    package com.zyb.pojo;
    
    import java.util.List;
    
    public class QueryVo {
    
        private User user;
        private List<Integer> ids;
    
        public QueryVo() {
        }
    
        public User getUser() {
            return user;
        }
    
        public void setUser(User user) {
            this.user = user;
        }
    
        public List<Integer> getIds() {
            return ids;
        }
    
        public void setIds(List<Integer> ids) {
            this.ids = ids;
        }
    }

    对应mapper.xml的SQL语句:

    <select id="selByids" resultType="user" resultMap="userMap" parameterType="com.zyb.pojo.QueryVo">
            <include refid="defaultSql"></include>
            <where>
                <if test="ids!=null and ids.size()>0">
                    <foreach collection="ids" open="and id in (" close=")" item="uid" separator=",">
                        #{uid}
                    </foreach>
                </if>
            </where>
    
        </select>

     上面的<include refid="defaultSql"></include>是因为抽取了常用的代码段

    场景二的解决:

    UserDao的方法:

    对应的mapper.xml的SQL语句:

        <select id="selByCondition" resultType="user" resultMap="userMap" parameterType="user">
            select * from my_user
            <where>
            <if test="uname!=null">
                and username=#{uname}
            </if>
            <if test="userSex!=null">
                and sex=#{userSex}
            </if>
            </where>
        </select>

    set标签和if搭配使用:

    参考:https://www.cnblogs.com/ysocean/p/7289529.html#_label3

    不一样的烟火
  • 相关阅读:
    4.练习
    『Java面试题总结
    『Maven + Junit + Jacoco』单元测试覆盖率
    『Linux』命令
    『ElasticSearch』安装、健康值检查
    『类型转换』Object转Map、Map转Object
    『ElasticSearch』排序报错
    MD5加密解密网址总结
    汉字编码的理解
    ASCII码的理解
  • 原文地址:https://www.cnblogs.com/cstdio1/p/11918892.html
Copyright © 2011-2022 走看看