zoukankan      html  css  js  c++  java
  • MyBatis中的条件查询(动态sql)

      本文将介绍使用MyBatis框架,编写DAO层接口类和接口类对应的sql映射文件,使用动态sql查询满足条件的用户集合。

      首先,需要创建一个实体类User,供封装数据使用;

    package com.xyfer.pojo;
    
    public class User{
        
        private String name;
        private int    age;
        private String sex;
        
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
         public int getAge() {
            return age;
        }
        public void setAge(int age) {
            this.age = age;
        }
         public String getSex() {
            return sex;
        }
        public void setSex(String sex) {
            this.sex = sex;
        }
        
    }

      编写DAO层接口类,提供一个查询用户集合的方法;

    packge com.xyfer.dao;
    
    public interface UserDao{
        //模糊查询符合条件的用户集合
        public List<User> queryUser(User user);
    }

      在mybatis配置文件中为DAO层接口类配置别名;

    <typeAliases>
            <typeAlias type="com.xyfer.User" alias="user"/>
    </typeAliases>

      编写与UserDao接口相对应的sql映射文件,查询数据库中的user表,并返回满足查询条件的用户集合;

    <mapper namespace="com.xyfer.dao.UserDao">
        <resultMap type="user" id="userMapper">
             <result column="name" property="name">
             <result column="age" property="age">
             <result column="sex" property="sex">
        </resultMap>
        <select id="queryUser" resultMap="userMapper">
            select
                *
            from
                user
            where
                age &gt;=22
            and age &lt=66
            <!--动态sql拼装-->
            <!--如果sex有值,则加上该条件-->
            <if test="sex != '' and sex != null">
                and sex =#{sex}
            </if>
            <!--如果name有值,则模糊匹配name-->
            <if test="name!= '' and name!= null">
                and name like CONCAT('%',$(name),'%')
            </if>
        </select>
    </mapper>

      对应的sql映射文件,使用动态sql编写,如果sex有值,查询sql就会动态加上sex条件进行过滤,name也一样,其中name是进行模糊匹配。

  • 相关阅读:
    一行转多行 及多行转一行的 hive语句
    sparkSQL、dataframe
    特征工程
    python相关
    pyspark dataframe 格式数据输入 做逻辑回归
    hive sql 随机抽样
    pyspark 逻辑回归程序
    3.27模拟赛
    luogu P3217 [HNOI2011]数矩形
    bzoj 4403 序列统计
  • 原文地址:https://www.cnblogs.com/xyfer1018/p/10238779.html
Copyright © 2011-2022 走看看