开发中常用方法(list去重、String跟list互转、mybatis插入语句返回主键等)

1.List转 String(“q,w,a,s”)
Joiner.on(",").join(list1)

2.String转List(“q,w,a,s”) 
Arrays.asList(String.split(","))

3.List去重 

方式一:
public static List removeDuplicate(List list) {
HashSet h = new HashSet(list);
list.clear();
list.addAll(h);
return list;
}

方式二:jdk8新特性stream流

List<String> list = list.stream().distinct().collect(Collectors.toList());

虽然stream流使用多线程的方式进行处理,但对于方式一仅仅只需要一次深copy即可,效率大大超过了方式二

 4.迭代器移除数据

Iterator it=list.iterator();
while(it.hasNext()){
Object e=it.next();
if("b".equals(e)){
it.remove();
}
}

5.map按添加顺序保存元素的,只有LinkedHashMap

 

6.sql中需要查null所对应的数据时 使用 is:如 select *from db where name is null

 

7.添加一条新数据并返回此数据的ID(主键):例子:
<insert id="saveMeter" parameterType="java.util.Map" useGeneratedKeys="true" keyProperty="id" keyColumn="ID">
INSERT INTO t_meter(NAME,INDEX_ADDRESS,TYPE,CONCENTRATOR_ID,COM_ID,INSTALL_ADDRESS,CREATETIME,CREATEOR)
VALUES (#{name},#{indexAddress},#{type},#{conId},#{comId},#{installAddress},#{date},#{userName})
</insert>
说明:useGeneratedKeys:必须设置为true,否则无法获取到主键id。 
keyProperty:设置为POJO对象的主键id属性名称。 
keyColumn:设置为数据库记录的主键id字段名称。

执行查询后,mybatis会将结果映射到插入参数中,比如 

Map map = new HashMap();为插入数据,执行查询后,map中会有id字段,如果keyProperty=“userId”,map中会有userId字段

 

8.在使用DATE_SUB('${clientTime}',INTERVAL 3 MINUTE)这个函数时不能使用数据库别名

9.DATE_FORMAT(rt.`current_Date`,'%Y-%m-%d') mybatis格式化日期

10.使用Redis做缓存:@Cacheable(value = { "zsy" },key = "'storage'") 这个注解开发使用时,先会查询redis是否有key:storage,
如果没有进行数据库等的查询,如果有,即在redis中查询key为storage所对应的值,那么如果使用原生的redis接口,如何去查询对于@Cacheable(value = { "zsy" },key = "'storage'") 中的值呢,我们打开redis客户端去查看,会发现,是以string类型存放的其key为elephont::adressByCodes中间用两个:隔开了

11.MongoDB中加入新的字段 ,最后一个true 表示对整个表都执行
如果要新增shop字段,并且赋值为空,则: 
db.getCollection('product').update({},{'$set':{'shop':''}},false, true)

比如在product 这个表中,要删除shop这个字段,用以下命令即可(在cmd中,或者robo 3T中)。
db.getCollection('product').update({},{'$unset':{'shop':1}},false, true)
修改字段IpAndPort为ip
db.getCollection('mongodbLog').update({}, {$rename : {"IpAndPort" : "ip"}}, false, true)

12.获取bean

拦截器在bean初始化前执行的,这时候redisService是null,需要通过下面这个方式去获取
WebApplicationContext wac = WebApplicationContextUtils.getRequiredWebApplicationContext(request.getServletContext());
redisService = wac.getBean(RedisService.class);

 

posted @ 2020-06-05 11:29  城北左少爷  阅读(710)  评论(0编辑  收藏  举报