导读


由于项目需要,这里面使用注解的方式操作数据库。但是在一个对象里面有hashMap时(这里面存放的kay,value分别是数据库的字段名和该字段对应的值),用来更新数据库。

使用


操作

标签操作CODE

  • model层 ```java public class User{ //* private String userName; private HashMap dbColumns;

    //….get-set

}

  1. - server
  2. ```java
  3. userMapper.updateUserByParams(tableName, partitionName, user);
  • dao层

    1. @Update(" <script> update ${tableName} partition(${partitionName})" +
    2. "<set>" +
    3. " address=#{user.address}" +
    4. " <if test=\"user.dbColumns!=null and user.dbColumns.size()>0\">" + "," +
    5. " <foreach collection=\"user.dbColumns.entrySet()\" item=\"val\" index= \"key\" separator=\",\">" +
    6. " ${key}=${val}" +
    7. " </foreach>" +
    8. " </if>" +
    9. "</set>" +
    10. "where phone=#{user.phone} and username=#{user.username} and user_email=#{user.email} " +
    11. "</script>")
    12. int updateUserByParams(@Param("tableName") String tableName, @Param("partitionName") String partitionName,
    13. @Param("user") User user);
  • 使用注解的方式做数据操作的时候,如果进行代码标签查询,比如 <if></if> , <foreach> </foreach>等,必须加上 <script></script> 标签,不然无法识别,并且在进行遍历的时候,特别要注意注入的是 # 还是 $

普通操作CODE

  1. @Select(" select * from ${tableName} partition(${partitionName}) WHERE inserTime >=to_date(#{inserTime},'yyyy-mm-dd hh24:mi:ss') and age >=#{age}")
  2. List<User> queryUserByInsertTime(@Param("tableName") String tableName, @Param("partitionName") String partitionName,
  3. @Param("age") String age, @Param("inserTime") String inserTime);
  • 普通没有判断的就不需要加标签了

    END


搞定~