错误笔记
1、 数据库测试添加 2
2、org.springframework.beans.factory.BeanCreationException: 2
3、Tomcat启动服务报错 3
4、Tomcat启动失败 4
5、 Project facet Java version 1.8 is not supported 项目导入(jdk)版本不一样 5
6、将数据库中的int值在前台转化成汉字显示 5
7、修改状态 5
8、两表查询,将第二张表的数据与第一张表相对应显示 6
9、两表连接查询,下拉框选择修改第二张表的内容 6
10、删除字段、状态字段联合查询数据状态(展示页面) 6
11、修改页面中删除、状态字段的联合展示 7
12、收藏文章,取消收藏文章(批量) 8
13、如果收藏,则收藏数+1 9
14、Required Long parameter 'id' is not present解决方法 9
15、Column 'id' in order clause is ambiguous 10
16、Result Maps collection already contains value for ........ 10
17、Parameter 'userId' not found. Available parameters are [1, 0, param1, param2] 10
18、检验是否收藏文章 10
19、根据用户id,文章id批量取消收藏 11
20、Mapper method 'com... has an unsupported return type... 12
21、Parameter 'id' not found. Available parameters are [array] 12
22、 根据id查询出一个数组,获得数组中的数据,判断获得的数据是否为0,如果为0则修改状态 12
23、模糊查询—搜索框中的关键字点下一页依然保留 13
24、输入时间段进行分页查询 13
25、Error evaluating expression 'articleId'. Return value (1) was not iterable. 18
26、前台App传id进行批量操作 18
27、批量操作,如果前台传数组的话 19
28、web端测试分页应加上分页参数 19
29、Invalid character found in the request target. The valid characters are defined 20
1、数据库测试添加
Id为主键不能重复,解决:将id的值换一下
2、org.springframework.beans.factory.BeanCreationException:
Error creating bean with name 'sqlSessionFactory' defined in URL [file:/C:/Users/Administrator/Desktop/youqi_20171218/youqi/youqi-dal/target/test-classes/test-spring/mybatis.xml]:
Invocation of init method failed; nested exception is org.springframework.core.NestedIOException:
Failed to parse mapping resource:
'file [C:UsersAdministratorDesktopyouqi_20171218youqiyouqi-daltargetclassesmapperappUserDtoMapper.xml]';
nested exception is org.apache.ibatis.builder.BuilderException:
Error parsing Mapper XML. Cause:
java.lang.IllegalArgumentException: Mapped Statements collection already contains value for com.yaan.youqi.dal.mapper.app.UserDtoMapper.selectUserPhone
解决:mapper.xml中id有重复
3、Tomcat启动服务报错
解决:在service中将项目Remove,然后点击service中右键clean将tomcat服务器清除,重启服务即可。
4、Tomcat启动失败
解决:
5、 Project facet Java version 1.8 is not supported 项目导入(jdk)版本不一样
6、将数据库中的int值在前台转化成汉字显示
<c:if test="${article.status ==0 }">已删除</c:if>
<c:if test="${article.status ==1 }">已发布</c:if>
<c:if test="${article.status ==2 }">未发布</c:if>
7、修改状态
<label for="isDelete">状 态:</label>
<c:if test="${category.isDelete == 0 }">
<input type="radio" name="isDelete" value="0" checked="checked">未删除
<input type="radio" name="isDelete" value="1" >已删除
</c:if>
<c:if test="${category.isDelete == 1 }">
<input type="radio" name="isDelete" value="0" >未删除
<input type="radio" name="isDelete" value="1" checked="checked">已删除
</c:if>
8、两表查询,将第二张表的数据与第一张表相对应显示
<c:forEach var="category" items="${categorylist}">
<c:if test="${article.categoryId==category.id}">
${category.categoryTitle}
</c:if>
</c:forEach>
9、两表连接查询,下拉框选择修改第二张表的内容
<label for="categoryId">类 目:</label>
<input type="hidden" value="${article.categoryId }" id="categoryId" />
<select name="categoryId">
<c:if test="${categorylist!=null }">
<c:forEach var="category" items="${categorylist}">
<option ${article.categoryId==category.id ? "selected":""}
value="${category.id}">
${category.categoryTitle}
</option>
</c:forEach>
</c:if>
</select>
10、删除字段、状态字段联合查询数据状态(展示页面)
<!-- 状态的判断 -->
<!-- 1、状态未选择:无状态 -->
<c:if test="${article.status == null}">
<span class="label label-sm label-grey">无状态</span>
</c:if>
<c:if test="${article.isDelete == null}">
</c:if>
<!-- 2、先判断该新闻isDelete 是否删除 -->
<!-- 未删除 -->
<c:if test="${article.isDelete ==0 }">
<!-- 3、如果未删除 判断status(状态)是否发布 -->
<!-- 未发布 --> <c:if test="${article.status ==0 }"> <span class="label label-sm label-warning">未发布</span>
</c:if>
<!-- 已发布 --> <c:if test="${article.status ==1 }"> <span class="label label-sm label-success">已发布</span> </c:if>
</c:if>
<!-- 已删除 -->
<c:if test="${article.isDelete ==1 }">
<span class="label label-sm label-important">已删除</span>
</c:if>
11、修改页面中删除、状态字段的联合展示
<label for="status">状 态:</label>
<c:if test="${article.isDelete == null }">
<input type="radio" name="isDelete" value="0">未删除
<input type="radio" name="isDelete" value="1">已删除
</c:if>
<c:if test="${article.status == null}">
<input type="radio" name="status" value="0" >未发布
<input type="radio" name="status" value="1" >已发布
</c:if>
<!-- 修改的时候
如果是未删除 则可以选:已删除 和 未发布、已发布
如果是已删除 则可以选:未删除(同时后台修改status状态为:未发布)
-->
<c:if test="${article.isDelete == 0}">
<input type="radio" name="isDelete" value="0" id="isDelete" checked="checked">未删除
<input type="radio" name="isDelete" value="1" id="isDelete" >已删除
<c:if test="${article.status == 0 }">
<input type="radio" name="status" value="0" id="status" checked="checked">未发布
<input type="radio" name="status" value="1" id="status">已发布
</c:if>
<c:if test="${article.status == 1 }">
<input type="radio" name="status" value="0" id="status">未发布
<input type="radio" name="status" value="1" id="status" checked="checked">已发布
</c:if>
</c:if>
<c:if test="${article.isDelete == 1}">
<input type="radio" name="isDelete" value="0" id="isDelete">未删除
<input type="radio" name="isDelete" value="1" id="isDelete" checked="checked">已删除
</c:if>
在controller中
/*
* 修改
*/
@RequestMapping("/update")
public void update(@ModelAttribute ArticleDto articleDto ,
@ModelAttribute ArticleDetailDto articleDetailDto ,
HttpServletRequest request, HttpServletResponse response){
articleDto.setUpdateTime(new Date());
/*
* 修改的时候
* 如果是未删除 则可以选:已删除、未发布、已发布【jsp页面控制】
* 如果是已删除 则可以选:未删除(同时修改status状态为:未发布)【后台控制】
*/
if(articleDto.getIsDelete()==1){
articleDto.setStatus(0);
}
articleDetailDto.setUpdateTime(new Date());
adminArticleService.update(articleDto);
adminArticleDetailService.update(articleDetailDto);
System.out.println("*******************"+articleDetailDto.getContent());
}
12、收藏文章,取消收藏文章(批量)
13、如果收藏,则收藏数+1
14、Required Long parameter 'id' is not present解决方法
15、Column 'id' in order clause is ambiguous
查询的多张表中有相同字段
16、Result Maps collection already contains value for ........
1、parameterType中的问题。这里的类名如果找不到也会报这个错,比如你之前是将该类名写死在这里,之后由于重构将该类转移到其他包中,如果这里不修改也会报这个错
2、还是parameterType中的问题,第2点是关于自定义类的,当你使用基本类型的时候,比如int、string等,千万不要写错了,比如写成strnig,咋一看看不出来,结果该问题就很难找
3、如果是自定义resultMap,如果这里写成resultType,也会报这个错。
4、在当前项目文件夹(不同的文件夹)有两个相同的当前文件。
17、Parameter 'userId' not found. Available parameters are [1, 0, param1, param2]
Mapper.java中原来是:
Int identifyAuth_repository(Integer userid,Integer permissionid);
修改为:
int identifyAuth_repository(@Param("userid")Integer
userid,@Param("permissionid")Integer
permissionid);
18、检验是否收藏文章
//校验是否已收藏
List<UserCollectArticleDto> collectlist = collectArticleService
.findByArticleIdAndUserId(userId, articleId);
if (collectlist.isEmpty()) {
collectArticleService.collectAdd(userId,articleId);
rs.setCode(1);
rs.setMsg("收藏成功");
return rs;
}
rs.setCode(0);
rs.setMsg("已收藏");
return rs;
}
19、根据用户id,文章id批量取消收藏
/**
* 批量取消收藏
* 取消收藏的时候文章的收藏状态字段不用修改,该用户取消收藏后,不代表其他用户取消收藏
*/
@RequestMapping(value = "/collectDelete")
public Result<UserCollectArticleDto> collectDelete(
@RequestParam("userId") Long userId,
@RequestParam("articleId") Long[] articleId,
HttpServletRequest request){
Result<UserCollectArticleDto> rs = new Result<UserCollectArticleDto>();
//判断是否收藏文章
List<UserCollectArticleDto> collectlist = collectArticleService.findByArticleIdAndUserId(userId,articleId);
if(collectlist.isEmpty()){
rs.setCode(0);
rs.setMsg("没收藏该文章");
return rs;
}
collectArticleService.collectDelete(userId,articleId);
rs.setCode(1);
rs.setMsg("取消收藏");
return rs;
}
SQL:
<delete id="deleteByArticleId" >
delete from user_collect_article
where article_id in
<foreach collection="articleId" item="item" open="(" close=")" separator=",">
#{item,jdbcType=BIGINT}
</foreach>
and user_id = #{userId,jdbcType=BIGINT}
</delete>
20、Mapper method 'com... has an unsupported return type...
mapper文件中的update,delete,insert语句是不需要设置返回类型的,它们都是默认返回一个int
21、Parameter 'id' not found. Available parameters are [array]
参数id 没有找到,可用参数 array,将id 修改成array 这里才能接受得到controller 传过来的数组
22、根据id查询出一个数组,获得数组中的数据,判断获得的数据是否为0,如果为0则修改状态
取消收藏
@Override
public void collectDelete(Long userId,Long[] articleId) {
//在收藏表中删除该收藏
collectArticleDtoMapper.deleteByArticleId(userId,articleId);
//1、修改文章收藏数,减一 (根据文章id查询)
articleDtoMapper.updateById(articleId);
//2、根据文章id查询
List<ArticleDto> articleDtolist=articleDtoMapper.findById(articleId);
//3、循环输出查询出来的文章
for(int i=0;i<articleDtolist.size();i++){
//4、判断收藏数是否为0
ArticleDto value = articleDtolist.get(i);
if(value.getCollectNum()==0){
value.setIsCollect(1);
articleDtoMapper.updateByPrimaryKeySelective(value);
}
/*if(articleDto.getCollectNum()==0){
//4、如果是0则修改收藏状态
articleDto.setIsCollect(1);
articleDtoMapper.updateByPrimaryKeySelective(articleDto);
}*/
}
}
23、模糊查询—搜索框中的关键字点下一页依然保留
<!-- 模糊查询,将关键字回显在输入框 -->
<%
String value=request.getParameter("title");
request.setAttribute("title", value);
%>
<span class="input-icon">
<label>新闻标题:</label>
<input type="text" placeholder="搜索文章标题" name="title"
value="<%=request.getAttribute("title")==null?"":request.getAttribute("title") %>"
class="nav-search-input" id="nav-search-input" autocomplete="on" />
</span>
</div>
可以简写:
<span class="input-icon">
<label>新闻标题:</label>
<input type="text" placeholder="搜索文章标题" name="title"
value="<%=request.getParameter("title")==null?"":request.getParameter("title") %>"
class="nav-search-input" id="nav-search-input" autocomplete="on" />
</span>
</div>
SQL:
Select *,d.content
from article left join article_detail d
on article.id=d.article_id
<where>
<if test="title !=null and title!='' ">
and title like concat('%',#{title},'%')
</if>
</where>
24、输入时间段进行分页查询
jsp:
<form method="post" action="${ctx }/article/articlelist">
<input name="page" value="${pageInfo.pageNum}" type="hidden"> <!--当前页 -->
<input id="totalPageCount" value="${pageInfo.pages}" type="hidden"> <!--总页数 -->
<!-- 模糊查询 -->
<!-- 按时间段进行查询 -->
<div class="searchTime" id="searchTime">
<span class="inputTitle">
<label>修改时间:</label>
<input type="text" class="Timeinput" id="d1" name="beginTime" placeholder="开始日"
value="<%=request.getParameter("beginTime")==null?"":request.getParameter("beginTime") %>"
onFocus="var d2=$dp.$('d2');WdatePicker({onpicked:function(){d2.focus();},maxDate:'#F{$dp.$D('d2')}'})" />
至
<input type="text" class="Timeinput" id="d2" name="endTime" placeholder="截止日"
value="<%=request.getParameter("endTime")==null?"":request.getParameter("endTime") %>"
onFocus="WdatePicker({minDate:'#F{$dp.$D('d1')}'})"/>
</span>
<input type="submit" value="查询">
<input type="reset" value="重置"/>
<a href="" οnclick="today()" style="text-decoration:underline;">今天</a>
<a href="" οnclick="week()" style="text-decoration:underline;">一周</a>
<a href="" οnclick="month()" style="text-decoration:underline;">三十天</a>
</div>
</form>
Js:
<!-- 引入时间插件js My97DatePicker文件包全部导入-->
<script src="${resources}/js/calendar/WdatePicker.js"></script>
// 对Date的扩展,将 Date 转化为指定格式的String
// 例子:
// (new Date()).Format("yyyy-MM-dd hh:mm:ss") ==> 2014-03-02 08:09:04
// (new Date()).Format("yyyy-MM-dd ") ==> 2014-03-02
Date.prototype.Format = function(fmt) {
var o = {
"M+" : this.getMonth() + 1, //月份
"d+" : this.getDate(), //日
"h+" : this.getHours(), //小时
"m+" : this.getMinutes(), //分
"s+" : this.getSeconds(), //秒
"q+" : Math.floor((this.getMonth() + 3) / 3), //季度
"S" : this.getMilliseconds()//毫秒
};
if (/(y+)/.test(fmt))
fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "")
.substr(4 - RegExp.$1.length));
for ( var k in o)
if (new RegExp("(" + k + ")").test(fmt))
fmt = fmt
.replace(
RegExp.$1,
(RegExp.$1.length == 1) ? (o[k])
: (("00" + o[k])
.substr(("" + o[k]).length)));
return fmt;
}
//获取当前日期,并进行格式化
var time = new Date().Format("yyyy-MM-dd");
//对日期进行加减
function addDate(date, days) {
var d = new Date(date);
d.setDate(d.getDate() + days);
var m = d.getMonth() + 1;
return d.getFullYear() + '-' + m + '-' + d.getDate();
}
//其中,date参数是要进行加减的日期,days参数是要加减的天数,如果往前算就传入负数,往后算就传入正数,如果是要进行月份的加减,就调用setMonth()和getMonth()就可以了,需要注意的是返回的月份是从0开始计算的,也就是说返回的月份要比实际月份少一个月,因此要相应的加上1。
//“今天”日期设置
function today() {
document.getElementById("d1").value = time;
document.getElementById("d2").value = time;
document.getElementById("myform").submit();
}
//“一周”日期设置
function week() {
document.getElementById("d1").value = addDate(time, -6);
document.getElementById("d2").value = time;
document.getElementById("myform").submit();
}
//“三十天”日期设置
function month() {
document.getElementById("d1").value = addDate(time, -29);
document.getElementById("d2").value = time;
document.getElementById("myform").submit();
}
Controller:
/**
* 分页查询文章
*/
@RequestMapping("/articlelist")
public ModelAndView articlelist(@ModelAttribute ArticleDto articleDto,
@RequestParam(value="page",defaultValue="1")int page,
@RequestParam(value="rows",defaultValue="10")int rows,
HttpServletRequest request){
PageInfo<ArticleDto> pageInfo=adminArticleService.findLimit(articleDto, page, rows);
List<CommonCategoryDto> categorylist = categoryService.findAll();
if(pageInfo!=null){
request.getSession().setAttribute("pageInfo",pageInfo);
request.getSession().setAttribute("articlelist",pageInfo.getList());
request.getSession().setAttribute("categorylist",categorylist);
}
ModelAndView model = new ModelAndView("/adminArticle/articlelist");
return model;
}
Service:
//分页查询
public PageInfo<ArticleDto>findLimit(ArticleDto articleDto,int pageNum,int pageRows);
ServiceImpl:
@Resource
private AdminArticleDtoMapper adminArticleDtoMapper;
@Override
public PageInfo<ArticleDto> findLimit(ArticleDto articleDto, int page, int rows) {
PageHelper.startPage(page,rows);
List<ArticleDto>list=adminArticleDtoMapper.find(articleDto);
PageInfo<ArticleDto>info=new PageInfo<ArticleDto>(list);
return info;
}
Mapper:
public List<ArticleDto> find(ArticleDto articleDto);
Mapper.xml:
<!-- 后台管理系统新闻分页查询 -->
<select id="find"
parameterType="com.yaan.youqi.dal.dto.app.ArticleDto" resultMap="BaseResultMap">
select
id, img, category_id, code_id, title, author, source, tag, weight, read_num, reply_num,
collect_num, publish_time, is_delete, article.create_time, article.update_time ,status,d.content
from article left join article_detail d
on article.id=d.article_id
<where>
1=1
<if test="title !=null and title!='' ">
and title like concat('%',#{title},'%')
</if>
<if test="beginTime !=null and beginTime !=''">
<![CDATA[ and DATE_FORMAT(article.update_time, '%Y-%m-%d')>= DATE_FORMAT(#{beginTime}, '%Y-%m-%d') ]]>
</if>
<if test="endTime!=null and endTime!=''">
<![CDATA[ and DATE_FORMAT(article.update_time, '%Y-%m-%d') <= DATE_FORMAT(#{endTime}, '%Y-%m-%d') ]]>
</if>
</where>
order by article.update_time desc
</select>
Bean:
@DateTimeFormat(pattern="yyyy-MM-dd")
private Date beginTime;
@DateTimeFormat(pattern="yyyy-MM-dd")
private Date endTime;
public Date getBeginTime() {
return beginTime;
}
public void setBeginTime(Date beginTime) {
this.beginTime = beginTime;
}
public Date getEndTime() {
return endTime;
}
public void setEndTime(Date endTime) {
this.endTime = endTime;
}
25、Error evaluating expression 'articleId'. Return value (1) was not iterable.
批量删除中遍历值
Xml文件中批量删除foreach中的字段
<select id="findById" resultMap="BaseResultMap" parameterType="java.util.List">
select
<include refid="Base_Column_List" />
from article
where id = #{id,jdbcType=BIGINT}
<!-- in
<foreach collection="array" item="item" open="(" close=")" separator=",">
#{item,jdbcType=BIGINT}
</foreach>
-->
and is_delete = 0 and status = 1
</select>
26、前台App传id进行批量操作
/**
* 批量取消收藏
* 取消收藏判断收藏数是否为0,如果为0则修改收藏状态。否则不用修改
*/
@RequestMapping(value = "/collectDelete")
public Result<UserCollectArticleDto> collectDelete(
@RequestParam("userId") Long userId,
@RequestParam(value="articleIds") String articleIds,
HttpServletRequest request){
Result<UserCollectArticleDto> rs = new Result<UserCollectArticleDto>();
//获取前台articleId,用,分隔
String[] strs = articleIds.split(",");
Long articleId=0l;
//参数为空检验
if (userId == null || articleIds == null) {
rs.setCode(0);
rs.setMsg("输入用户id或没收藏该文章");
return rs;
}
for (int i = 0; i < strs.length; i++) {
articleId=Long.parseLong(strs[i]);
List<UserCollectArticleDto> collectlist = collectArticleService.findByArticleIdAndUserId(userId, articleId);
if(collectlist.isEmpty()){
rs.setCode(0);
rs.setMsg("没收藏该文章");
return rs;
}
collectArticleService.collectDelete(userId,articleId);
rs.setCode(1);
rs.setMsg("取消收藏");
}
return rs;
}
27、批量操作,如果前台传数组的话
传入数组进行删除
<delete id="deleteByArticleId">
delete from user_collect_article
where article_id in
<foreach collection="articleId" item="item" open="(" close=")" separator=",">
#{item,jdbcType=BIGINT}
</foreach>
and user_id = #{userId,jdbcType=BIGINT}
</delete>
传入数组参数进行查数据
<select id="findById" resultMap="BaseResultMap" parameterType="java.util.List">
select
id, img, category_id, code_id, title, author, source, tag
from article
where id = in
<foreach collection="array" item="item" open="(" close=")" separator=",">
#{item,jdbcType=BIGINT}
</foreach>
and is_delete = 0 and status = 1
</select>
28、web端测试分页应加上分页参数
查全部数据(不分页):
http://119.10.86.172:8080/app/article/collectlist?userId=260
分页:
http://119.10.86.172:8080/app/article/collectlist?userId=260&pageNum=1&pageSize=10
29、Invalid character found in the request target. The valid characters are defined
测试路径url中尽量不要加特殊字符:| ,<>% $等
解决:
1、使用低版本的Tomcat,Tomcat 7.0版本以上会有问题,以下没问题
2、如果需要分隔用英文逗号,不用转义
3、如果在路径中添加特殊字符需要转义:如:| 对应 %7C
更多在链接中:http://blog.csdn.net/Ezreal_King/article/details/72654157
转载于:https://my.oschina.net/u/3727427/blog/1625402
最后
以上就是虚幻手套最近收集整理的关于日常工作错误记录的全部内容,更多相关日常工作错误记录内容请搜索靠谱客的其他文章。
发表评论 取消回复