mybatis注解动态sql

@Insert("INSERT INTO user (name, age, gender, experience) VALUES (<a href="http://www.oschina.net/tweet-topic/%7Bname%7D%2C" target="_blank">#{name},#</a>{age}, <a href="http://www.oschina.net/tweet-topic/%7Bgender%7D%2C" target="_blank">#{gender},#</a>{experience})")
    @Options(useGeneratedKeys = true, keyProperty = "id")
    int createUser(User user);
     
    @Insert("INSERT INTO user_interest (user_id, interest_id) VALUES (<a href="http://www.oschina.net/tweet-topic/%7BuserId%7D%2C" target="_blank">#{userId},#</a>{interestId})")
    int createUserInterest(@Param("userId") int userId, @Param("interestId") int interestId);
     
    @Delete("DELETE FROM user WHERE id = #{id}")
    int deleteUser(int id);
     
    @Delete("DELETE FROM user_interest WHERE user_id = #{userId}")
    int deleteUserInterest(int userId);
     
    // findUsers(String, int) 的执行策略定义在 UserMapper.xml 中
    List<User> findUsers(@Param("name") String name, @Param("experience") int experience);
     
    @Select("SELECT interest_id FROM user_interest WHERE user_id = #{userId} ORDER BY id")
    List<Integer> findUserInterests(int userId);
 
    // queryInterest(int, int) 的执行策略定义在 UserMapper.xml 中
    List<User> queryInterest(@Param("gender") int gender, @Param("experience") int experience);

  
这样定制性更大,实现起来也方便,记住这样做的话注解中的sql语句必须全都在<script>标签中
  @Select("<script>select * from user where <if test="username !=null ">username = #{username} </if> <if test="phone !=null ">phone = #{phone} </if> <if test="usermail !=null ">usermail = #{usermail } </if></script>")
原文地址:https://www.cnblogs.com/ShanHeDiao/p/5110362.html