魔数
很多类型的文件,其起始的几个字节的内容是固定的(或是有意填充,或是本就如此)。因此这几个字节的内容也被称为魔数 (magic number)
,因为根据这几个字节的内容就可以确定文件类型。有了这些魔术数字,我们就可以很方便的区别不同的文件。
代码
通过poi的FileMagic类进行实现,只有poi3.17版本以上才能使用FileMagic。
private boolean isExcelFile(MultipartFile excelFile) throws IOException {
boolean result = false;
//转换为input,为了使流能够实现markSupported
InputStream is = new BufferedInputStream(excelFile.getInputStream());
//使用poi中的类判断
FileMagic fileMagic = FileMagic.valueOf(is);
if (Objects.equals(fileMagic, FileMagic.OLE2) || Objects.equals(fileMagic, FileMagic.OOXML)) {
result = true;
}
is.close();
return result;
}
web中实现注意
需要转换Input流,让其可以实现marksupported方法
判断对象属性是否为空
空对象
空对象必须是未创建的实例,例如:Test test ;
而实例化的对象不能是空对象,例如:Test test = new Test();
所以对于实例化的对象使用 test == null 是不可行的,得对属性判空
代码
利用反射进行属性判空操作
private boolean isAllFieldNull(Object object) {
//获取类对象
Class clazz = object.getClass();
//获取属性集合
Field[] fs = clazz.getDeclaredFields();
boolean flag = true;
try {
for (Field field : fs) {
//设置私有属性也可访问
field.setAccessible(true);
//获取属性的值
Object val = field.get(object);
//属性不为null
if (val != null) {
flag = false;
break;
}
}
} catch (IllegalAccessException e) {
LOG.error("<font color='red'> 比较对象中属性为null异常:" + e.getMessage() + "</font>");
}
return flag;
}
mybatis实现批量插入数据
注解代码
//collection 集合数据list
//item 临时接受的TestBean对象
//separator表示以什么为分隔符
@Insert("<script> INSERT INTO chmx "
+ " (id,xmbh,xmmc,zh,ch,dyh,fjh,jzmj,gyftmj,tnmj,ftxs,chlx) "
+ " VALUES "
+ " <foreach collection = 'list' item='record' separator=',' > "
+ " (f_newid(),#{record.xmbh},#{record.xmmc},#{record.zh},#{record.ch},"
+ " #{record.dyh},#{record.fjh},#{record.jzmj},#{record.gyftmj},"
+ " #{record.tnmj},#{record.ftxs},#{record.chlx}) "
+ " </foreach>"
+ " </script>")
public void save(List<TestBean> list);
网友评论