1.mybatis二级缓存,指的的是将数据缓存,而非对象,而非获得的list。缓存将数据库中的数据,是数据,缓存到内存中。之后将数据每次重新加载到list中,所以每次生成的list对象都是不同的,list.hashcode()都不同。
开启二级缓存
1)、 在核心配置文件SqlMapConfig.xml中加入以下内容(开启二级缓存总开关):
cacheEnabled设置为 true
2)、在映射文件中,加入以下内容,开启二级缓存:
3).pojo实现序列化
由于二级缓存的数据不一定都是存储到内存中,它的存储介质多种多样,所以需要给缓存的对象执行序列化。
如果该类存在父类,那么父类也要实现序列化。
4).在相应mapper xml的cru insert update delete语句中添加刷新缓存属性
2.eclipse将项目发布到tomcat中,注:同一个项目,新项目会覆盖掉Tomcat中以前的项目,将旧项目删除再存入新项目。所以,一定要记得:images,db这种数据存储位置一定不要放在tomcat项目中,而是放在项目外。这样保证重新发布项目时,数据不受影响。
3.mybatis数据映射问题,mybatis没有hibernate那样,有xml文件将pojo类和数据库表中的字段匹配的xml。所以这就要求项目中的pojo类属性与数据库表中的字段要完全能匹配,名称要一样。这样mybatis才能将pojo类和表匹配起来。
4.mybatis也要配置扫描包。mybatis的扫描包指的是包含xml映射接口的包。
5.spring mvc上传图片问题,上传要记得添加两个jar包:commons-io.jar 和commons-fileupload.jar包。
并在sppring mvc中配置如下multipartResolver bin
<bean id=”multipartResolver” class=”org.springframework.web.multipart.commons.CommonsMultipartResolver”/>
同时jsp form表单要记得enctype=”multipart/form-data” 这个是上传文件必须的
controller中处理方法为:
- public void addImage(HttpServletRequest request,String path1,String path2) {
- //转型为MultipartHttpRequest(重点的所在)
- MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
- // 获得第1张图片(根据前台的name名称得到上传的文件)
- MultipartFile imgFile1 = multipartRequest.getFile("imgFile");
- String fileName = imgFile.getOriginalFilename(); //获得上传文件名
- //获取上传文件类型的扩展名,先得到.的位置,再截取从.的下一个位置到文件的最后,最后得到扩展名
- String ext = fileName.substring(fileName.lastIndexOf(".")+1,fileName.length()); //获得后缀名,知道上传文件类型。
6.只接收指定类型的图片:
- //定义一个数组,用于保存可上传的文件类型
- List fileTypes = new ArrayList();
- fileTypes.add("jpg");
- fileTypes.add("jpeg");
- fileTypes.add("bmp");
- fileTypes.add("gif");
-
- String ext = fileName.substring(fileName.lastIndexOf(".")+1,fileName.length());
- //对扩展名进行小写转换
- ext = ext.toLowerCase();
- if(fileTypes.contains(ext)) { //so something }
7.字符串string的常用操作:
(1)string.subString(),string.lastIndexOf(".")两个方法获得文件后缀名 String ext = fileName.substring(fileName.lastIndexOf(".")+1,fileName.length()); //获得后缀名,知道文件类型。
(2)str.tolowercase()将str所有字符大小写转换.
(3)str.replaceAll("/",""),替换字符问题。将第第一个参数全部替换为第二个参数。
- typeName = typeName.replaceAll("/", ""); //去掉"/"
- typeName = typeName.replaceAll(" ", ""); //替换半角空格
- typeName = typeName.replaceAll(" ", ""); //替换全角空格
- brandName = brandName.replaceAll("/", ""); //去掉"/"
- brandName = brandName.replaceAll(" ", ""); //替换半角空格
- brandName = brandName.replaceAll(" ", ""); //替换全角空格