导读
由于项目需要,这里面使用注解的方式操作数据库。但是在一个对象里面有hashMap时(这里面存放的kay,value分别是数据库的字段名和该字段对应的值),用来更新数据库。
使用
操作
标签操作CODE
model层 ```java public class User{ //* private String userName; private HashMap
dbColumns; //….get-set
}
- server层```javauserMapper.updateUserByParams(tableName, partitionName, user);
dao层
@Update(" <script> update ${tableName} partition(${partitionName})" +"<set>" +" address=#{user.address}" +" <if test=\"user.dbColumns!=null and user.dbColumns.size()>0\">" + "," +" <foreach collection=\"user.dbColumns.entrySet()\" item=\"val\" index= \"key\" separator=\",\">" +" ${key}=${val}" +" </foreach>" +" </if>" +"</set>" +"where phone=#{user.phone} and username=#{user.username} and user_email=#{user.email} " +"</script>")int updateUserByParams(@Param("tableName") String tableName, @Param("partitionName") String partitionName,@Param("user") User user);
使用注解的方式做数据操作的时候,如果进行代码标签查询,比如
<if></if>,<foreach> </foreach>等,必须加上<script></script>标签,不然无法识别,并且在进行遍历的时候,特别要注意注入的是#还是$。
普通操作CODE
@Select(" select * from ${tableName} partition(${partitionName}) WHERE inserTime >=to_date(#{inserTime},'yyyy-mm-dd hh24:mi:ss') and age >=#{age}")List<User> queryUserByInsertTime(@Param("tableName") String tableName, @Param("partitionName") String partitionName,@Param("age") String age, @Param("inserTime") String inserTime);
搞定~
