1.springmvc 使用中的错误信息
(1)NetworkError: 400 Bad Request
该错误是springmvc将页面提交信息映射到controller中参数或者bean时,参数类型不匹配导致
比如页面value=“”,而后台bean中定义为private int id;
2.Hibernate
(1)Hibernate中Entity中尽量避免使用java中基本类型int,long等,改用包装类型Integer,Long,因为在数据库中记录转化为Entity时,遇到null无法赋值给int,long
(2)hibernate级联更新时,没有执行delete
@Entity @Table (name = "BSS_PRODUCT") public class Product implements Serializable { @Id @GeneratedValue (generator = "SEQ_BSS_PRODUCT") @SequenceGenerator (name = "SEQ_BSS_PRODUCT", sequenceName = "SEQ_BSS_PRODUCT") private int id; @OneToMany (cascade = CascadeType.ALL, fetch = FetchType.EAGER, mappedBy = "product", orphanRemoval = true) private List<FeeItem> feeItems; public List<FeeItem> getFeeItems() { return feeItems; } public void setFeeItems(List<FeeItem> feeItems) { if(null==this.feeItems){ this.feeItems = feeItems; }else{ //这里不能直接this.feeItems = feeItems,因为hibernate已经将feeItems这个集合放到hibernate的对象池当中,首先应该告诉hibernate删除掉对象池中集合对象,必须改为如下实现 this.feeItems.clear(); this.feeItems.addAll(feeItems); } } }
3.fastjson问题
(1)转换后字符串含有引用类型{"$ref": "$.itemSkuList[0].itemSpecificationList[0]"}
private SerializerFeature feature = SerializerFeature.DisableCircularReferenceDetect;
String jsonString = JSON.toJSONString(objectToConvert,feature);
如果是springmvc,增加以下配置:
<!-- 避免IE执行AJAX时,返回JSON出现下载文件 --> <bean id="fastJsonHttpMessageConverter" class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter"> <property name="supportedMediaTypes"> <list> <value>application/json;charset=UTF-8</value> </list> </property> <property name="features"> <array value-type="com.alibaba.fastjson.serializer.SerializerFeature"> <value>DisableCircularReferenceDetect</value> </array> </property> <!--<property name="serializerFeature"> --> <!--这个地方加上这个功能吧,能自己配置一些东西,比如时间的格式化,null输出""等等 --> <!--</property> --> </bean>(2)被转化为JSON字符串对象中某个属性不需要被fastjson序列化,在变量定义处或者变量get方法处添加@JSONField(serialize=false) 官方API说明如下:
com.alibaba.fastjson.annotation.JSONField @Target(value={FIELD, METHOD, PARAMETER}) @Retention(value=RUNTIME) Note: This element neither has attached source nor attached Javadoc and hence no Javadoc could be found.例子如下:
@JSONField(serialize=false) public Product getProduct() { return product; }4.myibatis 1)通过string传入单个参数到myibatis两种方法 方法一: 在DAO方法上添加@Param,如下:
User findByUsername(@Param(value="username") String username) throws Exception;
<select id="findByUsername" parameterType="java.lang.String" resultType="User"> SELECT <include refid="columns_user"></include> FROM sys_user WHERE 1=1 <if test="username!= null and username!= ''"> AND user_name=#{username,jdbcType=VARCHAR} </if> </select>方法二: 在DAO中方法保持不变,但在XML中使用_parameter
User findByUsername(@Param(value="username") String username) throws Exception;
<select id="findByUsername" parameterType="java.lang.String" resultType="User"> SELECT <include refid="columns_user"></include> FROM sys_user WHERE 1=1 <if test="_parameter!= null and _parameter!= ''"> AND user_name=#{_parameter,jdbcType=VARCHAR} </if> </select>2)myibatis配置文件中jdbcType类型值写错后,导致web启动卡停,报错如下:
三月 14, 2017 3:22:29 下午 org.apache.catalina.core.ApplicationContext log 信息: No Spring WebApplicationInitializer types detected on classpath SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". SLF4J: Defaulting to no-operation (NOP) logger implementation SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details. 三月 14, 2017 3:22:29 下午 org.apache.catalina.core.ApplicationContext log 信息: Initializing Spring root WebApplicationContext [INFO ] localhost-startStop-1 2017-03-14 15:22:30,960 com.mchange.v2.log.MLog - MLog clients using log4j logging. [INFO ] localhost-startStop-1 2017-03-14 15:22:31,024 com.mchange.v2.c3p0.C3P0Registry - Initializing c3p0-0.9.2.1 [built 20-March-2013 10:47:27 +0000; debug? true; trace: 10]解决办法:自己检查myibatis的XML配置文件,修复错误配置值
5.linux常用命令
#查找当前目录下.phtml文件中,最近30分钟内修改过的文件 find . -name '*.phtml' -type f -mmin -30 #查找当前目录下.phtml文件中,最近30分钟内修改过的文件的详细情况 find . -name '.phtml' -type f -mmin -30 -ls #查找当前目录下,最近1天内修改过的常规文件 find . -type f -mtime -l #查找当前目录下,最近1天前(2天内)修改过的常规文件 find . -type f -mtime +1
6.oracle
6.1 ORA-01034和ORA-27101解决办法
问题:
ORA-01034: ORACLE not available ORA-27101: shared memory realm does not exist
解决办法:
sqlplus /nolog; connect / as sysdba; shutdown immediate; startup;
7. J2EE中VO DTO DO PO总结
VO(View Object):视图对象,用于展示层,它的作用是把某个指定页面(或组件)的所有数据封装起来。
DTO(Data Transfer Object):数据传输对象,这个概念来源于J2EE的设计模式,原来的目的是为了EJB的分布式应用提供粗粒度的数据实体,以减少分布式调用的次数,从而提高分布式调用的性能和降低网络负载,但在这里,我泛指用于展示层与服务层之间的数据传输对象。
DO(Domain Object):领域对象,就是从现实世界中抽象出来的有形或无形的业务实体。
PO(Persistent Object):持久化对象,它跟持久层(通常是关系型数据库)的数据结构形成一一对应的映射关系,如果持久层是关系型数据库,那么,数据表中的每个字段(或若干个)就对应PO的一个(或若干个)属性。