mybatis从使用到了解(七)_mybatis动态sql的妙用

动态SQL

在使用JDBC拼接SQL的时候,经常要确保不能完了必要的空格,对于的逗号,而mybatis的动态SQL则完美的解决了这些问题。本文只介绍利用mybatis的动态SQL解决常见的SQL拼接问题。
mybatis的动态sql包含一下内容:

  • if
  • choose,when,otherwise
  • trim,where,set
  • foreach
  • bind

解决where后SQL条件判断问题



在上名的sql中,如果三个if条件全为空,则最后拼接的sql为:

select * from student where

如果第一个为判断为空,则最后拼接的sql为:

select * from student where and student_age = #{studentAge} and student_phone = #{studentPhone}

上面拼接的两个sql语法都存在问题,只需要利用一点小技巧就能解决这个问题。如下,利用标签,mybatis会自动处理上面的问题。



也可以利用trim来解决


利用解决update中set逗号问题


    update student
    student_name = #{studentName},
    student_age = #{studentAge},
    student_name = student_phone = #{studentPhone},
    where student_id = #{studentId}

从上面可以看出,set始终会多一个逗号。解决方案如下:


    update student
    
        student_name = #{studentName},
        student_age = #{studentAge},
        student_name = student_phone = #{studentPhone},
    
    where student_id = #{studentId}

或者


    update student
    
        student_name = #{studentName},
        student_age = #{studentAge},
        student_name = student_phone = #{studentPhone},
    
    where student_id = #{studentId}

利用foreach查询


你可能感兴趣的:(mybatis从使用到了解(七)_mybatis动态sql的妙用)