您的位置:首页 > 数据库 > Oracle

oracle + ssm 项目重构遇到的问题及解决方法

2017-10-13 10:19 351 查看
1.遇到了个异常:

javax.servlet.ServletException: No adapter for handler [public int com.picc.ecargo.controller.addititive.AddititiveController.addititiveSubmit(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse,org.springframework.ui.ModelMap,com.picc.ecargo.vo.addititive.AddititiveVo)
throws java.lang.Exception]: Does your handler implement a supported interface like Controller?

导致这个异常出现的问题比较多,我说一下自己出现问题的原因:

我是用ssm框架,用的注解,在传递表单里面的参数时,要用到实体类AddititiveVo,一开始我是没加@ResponseBody注解,所以报这个错误了,后来去网上搜,也没什么结果,偶尔发现,其他的方法都有这个注解,唯独这个方法没有,所以加上了,然后就没问题了

public @ResponseBody int addititiveSubmit(HttpServletRequest request,HttpServletResponse response ,ModelMap map,AddititiveVo avo)throws Exception{


那么来扩展一下,@ResponseBody这个注解的作用:

作用: 

      i) 该注解用于读取Request请求的body部分数据,使用系统默认配置的HttpMessageConverter进行解析,然后把相应的数据绑定到要返回的对象上;
      ii) 再把HttpMessageConverter返回的对象数据绑定到 controller中方法的参数上。

当然导致这个异常的原因也很多:比如类名和包名不小心写错了,没加@controller注解.......不一一去说了,以后遇到类似的情况,再更新文章

2.返回的数据应该是个List<实体类A>时,xml中select中的resulttype怎么写

resulttype直接写成resulttype="实体类A"就可以,不用管是不是list,只要是一个类型的就可以

3.批量查询数据ssm框架中在xml中怎么写那?

前端:接受参数是个类似这样的字符串:"110,120,119,10086"

<form id = "clauseSubmit" action="${basePath}/addititive/addititiveSubmit.do" method = "post">
<select multiple="multiple" id="additivenotpass" class="form-control list-group" name="additivenotpass" style="width:300px;height:375px;">
<#if notPassCaluseName??>
<#list notPassCaluseName as caluseName>
<option id="${caluseName.additionalriskid}" name="caluseName" value="${caluseName.additionalriskid}">${caluseName.clausecname}</option>
</#list>
<#else>
</#if>
</select>
</form>XML:将字符串分割了
<select id="findListByNumberY" resultType="com.picc.ecargo.po.riskcode.FreightAdditiveClauseCode"  >
select
*
from AdditionalRiskCode
where
INSURANCETYPE = '1'
and ADDITIONALRISKID not in
<foreach item="item" index="index" collection="array"    open="(" separator="," close=")">
#{item}
</foreach>
</select>


4.创建序列

create sequence seq_newsId
increment by 1
start with 1
maxvalue 999999999;

5.oracle中字段类型是Date的,实体类也是Date的,要set时间的时候,这个时间的格式....?

推荐一个工具类:

public class DataUtil {
public static Date SysTime() {
String Nowtime = new SimpleDateFormat("yyyy-MM-dd").format(Calendar.getInstance().getTime());
java.sql.Date time = java.sql.Date.valueOf(Nowtime);
return time;
}
}

6.在重构项目时,可能涉及到表的修改,这时候应该有冗余字段,方便以后做功能扩展

7.oracle改表名

ALTER TABLE old_table_name RENAME TO new_table_name;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: