遇到
映射文件发生改变
在项目中有的地方是使用反射机制进行的操作,可能对于类进行了某些更改,科室映射文件没有更改,采用匿名就会出现这样的问题,解决办法要么更改映射文件,要不不要使用匿名调用。
JavaDocs路径报红
Classes
Classes中的jar,是程序在运行项目的时候使用的,因为这个是直接编译好的class文件,可以直接被虚拟机运行的。
Sources
Sources中的jar,就是给开发人员看的,自己在学习和debug的时候,可以看到jar包里面的各种注释说明,方便学习。
JavaDocs
JavaDocs中的jar,与Sources的jar一个道理,起到辅助的作用。
解决方法:
【问题】打印数据结果是undefined
弹出undefined是指当前浏览页面出现了未知错误原因的错误的意思。在使用了一个并未申明的变量时,或者是使用已经申明但是并没有赋值的变量时,又或者是使用了一个并不存在的的变量和属性时,返回的就是这个值。
一般是在开发网站的时候定义不正确或是转换不正确,或是找不到定义出现undefined未定义这个错误,如果出现在浏览网页时可以刷新网页或换一个时间点再浏览该网页;也可以看一下该页面的源码(此情况一般是我们自主编写的网页),如果源码上也是undefined,那就说明页面本来就是这样,如果源码的这部分是js代码,就说明js代码使用的数据有问题。
出现undefined的原因:
1.在HTML语言中,按顺序执行下来的,你在某一行定义了一个a数组并且给赋值了,但是在接下来你的循环里又重新定义了a数组,没有给赋值,输出的结果就会是undefined.
2.在javascipt中,变量是通过var声明的,变量在声明的时候的同时没有定义值,变量声明了没有定义值(赋值),那么javaScript引擎会将此变量自动指向undefined对象。
说是拼接错误,参数获取和设定的不一样
Caused by: org.springframework.dao.TransientDataAccessResourceException: PreparedStatementCallback; SQL [select * from tab_route where count > 0 ]; Parameter index out of range (1 > number of parameters, which is 0).; nested exception is java.sql.SQLException: Parameter index out of range (1 > number of parameters, which is 0).
错误发生原因其实很简单,就是当设置参数时,没有相应的问号与之匹配(或者根本就没有?号);
org.springframework.dao.TransientDataAccessResourceException
1 pojo实体对象属性与数据库表属性不一致的原因,但是我不是这个问题。
2 数据库表字段为datetime 类型,默认为0,无法转换,默认值可改为0000-00-00 00:00:00:00,或者连接数据库url后加上
zeroDateTimeBehavior=convertToNull,自动转换。
例:
dbconfig.properties文件配置:
url=jdbc:mysql://localhost:3306/tableName?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull
String sql = "select * from tab_route where count > 0 ";
//StringBuilder:可变字符序列、效率高、线程不安全;
StringBuilder sb = new StringBuilder(sql);
List params = new ArrayList();//条件们
//2.判断参数是否有值
// 加上!"null".equals(rname)才不会报错,否则查找不到对应内容
if (rname != null && rname.length() > 0 && !"null".equals(rname)) {
sb.append(" and rname like ? ");
params.add("%" + rname + "%");
}
if (last != 0){
sb.append(" and price between ? and ?");
params.add(first);
params.add(last);
}
// if (first != 0) {
// sb.append(" and t.price > ? ");
// //添加?对应的值
// params.add(first);
// }
// if (last != 0) {
// sb.append(" and t.price < ? ");
// //添加?对应的值
// params.add(last);
// }
//分页
//按收藏次数降序排列
sb.append(" order by count desc ");
//加入分页查询
sb.append(" limit ? , ? ");//查询条件
// sql = sb.toString();//sql语句重新赋值,拼接多条件查询
params.add(start);
params.add(pageSize);
return template.query(sql, new BeanPropertyRowMapper<Route>(Route.class), params.toArray());
}
【问题解决】sql返回值未被接收,因为我忘记写进去了,写入后即可
【出现问题】f12后也是有两个错误,一个是找不到用户名name,一个是获取不到集合长度
怪哉!
【问题解决】
名字是因为没登录我可以理解,但是集合为何查不到嘞?登录一下
name获取到了
网页也不报错了,可是pb依旧获取不到
???
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at cn.itcast.travel.web.servlet.BaseServlet.service(BaseServlet.java:43)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at cn.itcast.travel.web.filter.CharacterFilter.doFilter(CharacterFilter.java:53)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:748)
Caused by: org.springframework.dao.TransientDataAccessResourceException: PreparedStatementCallback; SQL [select * from tab_route where 1 = 1 ]; Parameter index out of range (1 > number of parameters, which is 0).; nested exception is java.sql.SQLException: Parameter index out of range (1 > number of parameters, which is 0).
at org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.doTranslate(SQLStateSQLExceptionTranslator.java:108)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:73)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:81)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:81)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:660)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:695)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:727)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:737)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:792)
at cn.itcast.travel.dao.impl.FavoriteDaoImpl.findRouteByRangePage(FavoriteDaoImpl.java:114)
at cn.itcast.travel.service.impl.FavoriteServiceImpl.pageFavoriteRank(FavoriteServiceImpl.java:101)
at cn.itcast.travel.web.servlet.RouteServlet.favoriteRank(RouteServlet.java:225)
... 25 more
Caused by: java.sql.SQLException: Parameter index out of range (1 > number of parameters, which is 0).
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129)
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97)
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:89)
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:63)
at com.mysql.cj.jdbc.ClientPreparedStatement.checkBounds(ClientPreparedStatement.java:1345)
at com.mysql.cj.jdbc.ClientPreparedStatement.getCoreParameterIndex(ClientPreparedStatement.java:1358)
at com.mysql.cj.jdbc.ClientPreparedStatement.setObject(ClientPreparedStatement.java:1632)
at com.alibaba.druid.pool.DruidPooledPreparedStatement.setObject(DruidPooledPreparedStatement.java:476)
at org.springframework.jdbc.core.StatementCreatorUtils.setValue(StatementCreatorUtils.java:426)
at org.springframework.jdbc.core.StatementCreatorUtils.setParameterValueInternal(StatementCreatorUtils.java:235)
at org.springframework.jdbc.core.StatementCreatorUtils.setParameterValue(StatementCreatorUtils.java:166)
at org.springframework.jdbc.core.ArgumentPreparedStatementSetter.doSetValue(ArgumentPreparedStatementSetter.java:66)
at org.springframework.jdbc.core.ArgumentPreparedStatementSetter.setValues(ArgumentPreparedStatementSetter.java:47)
at org.springframework.jdbc.core.JdbcTemplate$1.doInPreparedStatement(JdbcTemplate.java:701)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:644)
... 32 more
org.springframework.dao.TransientDataAccessResourceException
1 pojo实体对象属性与数据库表属性不一致的原因,但是我不是这个问题。
2 数据库表字段为datetime 类型,默认为0,无法转换,默认值可改为0000-00-00 00:00:00:00,或者连接数据库url后加上
zeroDateTimeBehavior=convertToNull,自动转换。
例:
dbconfig.properties文件配置:
url=jdbc:mysql://localhost:3306/tableName?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull
查看数据库,tab_route表中时间果然是date类型
带时间
但是没有出现类似0000-00-00 00:00:00的异常数据,应不是这个错误。