【错误记录】映射文件发生改变

遇到

映射文件发生改变

在项目中有的地方是使用反射机制进行的操作,可能对于类进行了某些更改,科室映射文件没有更改,采用匿名就会出现这样的问题,解决办法要么更改映射文件,要不不要使用匿名调用。

JavaDocs路径报红

【错误记录】映射文件发生改变_第1张图片

Classes

Classes中的jar,是程序在运行项目的时候使用的,因为这个是直接编译好的class文件,可以直接被虚拟机运行的。

Sources

Sources中的jar,就是给开发人员看的,自己在学习和debug的时候,可以看到jar包里面的各种注释说明,方便学习。

JavaDocs

JavaDocs中的jar,与Sources的jar一个道理,起到辅助的作用。

解决方法:

【错误记录】映射文件发生改变_第2张图片

【问题】打印数据结果是undefined

弹出undefined是指当前浏览页面出现了未知错误原因的错误的意思。在使用了一个并未申明的变量时,或者是使用已经申明但是并没有赋值的变量时,又或者是使用了一个并不存在的的变量和属性时,返回的就是这个值。

一般是在开发网站的时候定义不正确或是转换不正确,或是找不到定义出现undefined未定义这个错误,如果出现在浏览网页时可以刷新网页或换一个时间点再浏览该网页;也可以看一下该页面的源码(此情况一般是我们自主编写的网页),如果源码上也是undefined,那就说明页面本来就是这样,如果源码的这部分是js代码,就说明js代码使用的数据有问题。

【错误记录】映射文件发生改变_第3张图片

出现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.class), params.toArray());
        }

【问题解决】sql返回值未被接收,因为我忘记写进去了,写入后即可

【出现问题】f12后也是有两个错误,一个是找不到用户名name,一个是获取不到集合长度

【错误记录】映射文件发生改变_第4张图片

怪哉!

【错误记录】映射文件发生改变_第5张图片

【问题解决】

名字是因为没登录我可以理解,但是集合为何查不到嘞?登录一下

name获取到了

【错误记录】映射文件发生改变_第6张图片

网页也不报错了,可是pb依旧获取不到

【错误记录】映射文件发生改变_第7张图片

???

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类型

【错误记录】映射文件发生改变_第8张图片

带时间

但是没有出现类似0000-00-00 00:00:00的异常数据,应不是这个错误。

【后续】还是之前那个问题,后端没写入前端自然找不到输出值啦,后端数据写入自然可以在前端输出

你可能感兴趣的:(错误记录,java,maven)