7 - 动态SQL--where

where if
dao
在含有int类型的查询参数,最好设置为Integer,以便接收null

List<Student> selectStudents(@Param("name") String name,
                             @Param("age") Integer age,
                             @Param("gender") GenderEnum gender);

mapper

 <select id="selectStudents" resultMap="studentMapper">
       select * from `student`
       <where>
           <if test="name != null">
               `name` like concat('%',#{name},'%')
           </if>
           <if test="age != null">
               and `age` = #{age}
           </if>
           <if test="gender != null">
               and `gender` = #{gender,typeHandler=genderTypeHandler}
           </if>
       </where>
    </select>

test

@Test
    public void test() {
        SqlSession session = factory.openSession();
        try {
            StudentMapper studentMapper = session.getMapper(StudentMapper.class);
//            Student student = new Student("hu",19,GenderEnum.getGender(1));
//            int affectedRows = studentMapper.insertStudent(student);
            String name = "h";
            int age = 20;
            GenderEnum gender = GenderEnum.getGender(2);
            List<Student> students = studentMapper.selectStudents(name, age,gender);
//            List<Student> students = studentMapper.selectStudents(name, age,null);
//            List<Student> students = studentMapper.selectStudents(name, null,gender);
//            List<Student> students = studentMapper.selectStudents(name, null,null);
//            List<Student> students = studentMapper.selectStudents(null, null,null);
            if(!students.isEmpty()){
                Iterator<Student> it = students.iterator();
                while(it.hasNext()){
                    Student student = it.next();
                    System.out.println(student);
                }
            }else{
                System.out.println("没有查到结果");
            }
        } finally {
            session.commit();
            session.close();
        }
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一. Java基础部分.................................................
    wy_sure阅读 3,833评论 0 11
  • Lua 5.1 参考手册 by Roberto Ierusalimschy, Luiz Henrique de F...
    苏黎九歌阅读 13,882评论 0 38
  • pyspark.sql模块 模块上下文 Spark SQL和DataFrames的重要类: pyspark.sql...
    mpro阅读 9,504评论 0 13
  • 1. 简介 1.1 什么是 MyBatis ? MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的...
    笨鸟慢飞阅读 5,571评论 0 4
  • 目标描述SMART原则 S specific 具体的M mesureable 可测量A attainable ...
    玥玥888阅读 469评论 0 0