mybatis+springmvc+sqlite一个累心的问题:不在纠结

1 java.sql.SQLException: NYI

2 org.sqlite.RS.getColumnClassName(RS.java:269)

在配置mybatis+springmvc+sqlite时候,

<insert id="saveUser" parameterType="User"  keyProperty="id" useGeneratedKeys="false" >
               <selectKey keyProperty="id" resultType="int"  order="BEFORE">
                   SELECT seq+1 as seq FROM sqlite_sequence WHERE (name = ‘t_demo‘)  //sqlite 不会自动加1,所以手动了
               </selectKey>
               insert into t_demo (id,name,age,sex)values(#{id},#{name},#{age},#{sex})
    </insert>

遭遇到一下问题:

1   root cause

org.springframework.jdbc.UncategorizedSQLException: Error selecting key or setting result to parameter object. Cause: java.sql.SQLException: NYI
; uncategorized SQLException for SQL []; SQL state [null]; error code [0]; NYI; nested exception is java.sql.SQLException: NYI

2  root cause

java.sql.SQLException: NYI
	org.sqlite.RS.getColumnClassName(RS.java:269)

因为网上关于SQLite的整合资料较少(什么百度 谷歌,搜遍了,连mybatis官网的例子都看了),所以自己就折腾,大概有4天吧,每天看到这个错误,已经不烦了,已经到快吐了。

在配置mybatis的mapper.xml中需要配置 insert语句,而ID自增是最大的问题,PostgreSQL版的我已经搞定,想着

SQLite应该类似,结果始终是报错,具体:

  1 type Exception report
  2
  3 message
  4
  5 description The server encountered an internal error () that prevented it from fulfilling this request.
  6
  7 exception
  8
  9 org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.jdbc.UncategorizedSQLException: Error selecting key or setting result to parameter object. Cause: java.sql.SQLException: NYI
 10 ; uncategorized SQLException for SQL []; SQL state [null]; error code [0]; NYI; nested exception is java.sql.SQLException: NYI
 11     org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:656)
 12     org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:560)
 13     javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
 14     javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
 15
 16
 17 root cause
 18
 19 org.springframework.jdbc.UncategorizedSQLException: Error selecting key or setting result to parameter object. Cause: java.sql.SQLException: NYI
 20 ; uncategorized SQLException for SQL []; SQL state [null]; error code [0]; NYI; nested exception is java.sql.SQLException: NYI
 21     org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:83)
 22     org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80)
 23     org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80)
 24     org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:71)
 25     org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:365)
 26     com.sun.proxy.$Proxy10.insert(Unknown Source)
 27     org.mybatis.spring.SqlSessionTemplate.insert(SqlSessionTemplate.java:237)
 28     com.sinaapp.mydemo27.daoimpl.UserDaoImpl.inseartUser(UserDaoImpl.java:20)
 29     com.sinaapp.mydemo27.service.UserService.insertUser(UserService.java:30)
 30     com.sinaapp.mydemo27.service.UserService$$FastClassByCGLIB$$8193c93a.invoke(<generated>)
 31     net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:191)
 32     org.springframework.aop.framework.Cglib2AopProxy$CglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:688)
 33     org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
 34     org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110)
 35     org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
 36     org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:621)
 37     com.sinaapp.mydemo27.service.UserService$$EnhancerByCGLIB$$3e2827df.insertUser(<generated>)
 38     com.sinaapp.mydemo27.controller.UserController.handleInseart(UserController.java:55)
 39     sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 40     sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
 41     sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
 42     java.lang.reflect.Method.invoke(Unknown Source)
 43     org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:176)
 44     org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:426)
 45     org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:414)
 46     org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:790)
 47     org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)
 48     org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)
 49     org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:560)
 50     javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
 51     javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
 52
 53
 54 root cause
 55
 56 java.sql.SQLException: NYI
 57     org.sqlite.RS.getColumnClassName(RS.java:269)
 58     org.apache.ibatis.executor.resultset.FastResultSetHandler$ResultColumnCache.<init>(FastResultSetHandler.java:585)
 59     org.apache.ibatis.executor.resultset.FastResultSetHandler.handleResultSets(FastResultSetHandler.java:151)
 60     org.apache.ibatis.executor.statement.PreparedStatementHandler.query(PreparedStatementHandler.java:57)
 61     org.apache.ibatis.executor.statement.RoutingStatementHandler.query(RoutingStatementHandler.java:70)
 62     org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:57)
 63     org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:267)
 64     org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:141)
 65     org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:105)
 66     org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:81)
 67     org.apache.ibatis.executor.keygen.SelectKeyGenerator.processGeneratedKeys(SelectKeyGenerator.java:65)
 68     org.apache.ibatis.executor.keygen.SelectKeyGenerator.processBefore(SelectKeyGenerator.java:41)
 69     org.apache.ibatis.executor.statement.BaseStatementHandler.generateKeys(BaseStatementHandler.java:127)
 70     org.apache.ibatis.executor.statement.BaseStatementHandler.<init>(BaseStatementHandler.java:60)
 71     org.apache.ibatis.executor.statement.PreparedStatementHandler.<init>(PreparedStatementHandler.java:36)
 72     org.apache.ibatis.executor.statement.RoutingStatementHandler.<init>(RoutingStatementHandler.java:42)
 73     org.apache.ibatis.session.Configuration.newStatementHandler(Configuration.java:348)
 74     org.apache.ibatis.executor.SimpleExecutor.doUpdate(SimpleExecutor.java:43)
 75     org.apache.ibatis.executor.BaseExecutor.update(BaseExecutor.java:108)
 76     org.apache.ibatis.executor.CachingExecutor.update(CachingExecutor.java:75)
 77     org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:145)
 78     org.apache.ibatis.session.defaults.DefaultSqlSession.insert(DefaultSqlSession.java:134)
 79     sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 80     sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
 81     sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
 82     java.lang.reflect.Method.invoke(Unknown Source)
 83     org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:355)
 84     com.sun.proxy.$Proxy10.insert(Unknown Source)
 85     org.mybatis.spring.SqlSessionTemplate.insert(SqlSessionTemplate.java:237)
 86     com.sinaapp.mydemo27.daoimpl.UserDaoImpl.inseartUser(UserDaoImpl.java:20)
 87     com.sinaapp.mydemo27.service.UserService.insertUser(UserService.java:30)
 88     com.sinaapp.mydemo27.service.UserService$$FastClassByCGLIB$$8193c93a.invoke(<generated>)
 89     net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:191)
 90     org.springframework.aop.framework.Cglib2AopProxy$CglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:688)
 91     org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
 92     org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110)
 93     org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
 94     org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:621)
 95     com.sinaapp.mydemo27.service.UserService$$EnhancerByCGLIB$$3e2827df.insertUser(<generated>)
 96     com.sinaapp.mydemo27.controller.UserController.handleInseart(UserController.java:55)
 97     sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 98     sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
 99     sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
100     java.lang.reflect.Method.invoke(Unknown Source)
101     org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:176)
102     org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:426)
103     org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:414)
104     org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:790)
105     org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)
106     org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)
107     org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:560)
108     javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
109     javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

快心死的时候,都去

https://code.google.com/p/sqlite-jdbc/source/browse/src/main/java/org/sqlite/RS.java?r=e74939879270122b724d6fd62d8c40aa70870fcf

看了SQLite jdbc的source,结果只发现下面这句,于是把resultType类型改成 “Object”,结果还是报错。

  public String getColumnClassName(int col) throws SQLException {
        checkCol(col);
        return "java.lang.Object";
    }

绝望了,不过 突然想到 要不要去 findjar.com上找个新的SQLite-jdbc 驱动,于是

http://www.findjar.com/index.x?query=sqlite

找到了最新版本“ sqlite-jdbc-3.6.14.1.jar”   结果令人惊喜的事发生了,

报错不再是java.sql.SQLException: NYI,

换 parameterTypeMissMatch,这个把resultType类型改回去int,再跑,以为会ok,

出人意料的是,又报错,不过这个错我是知道的,sql主键唯一的错误,原来SQLite的ID自增是假的,就不自增,只是记录而已,要自己手动加。

修改自增后,测试没有问题了。

一个字,心累,share防止有同样问题的人在此纠结。

时间: 2025-01-05 06:57:34

mybatis+springmvc+sqlite一个累心的问题:不在纠结的相关文章

spring security+mybatis+springMVC构建一个简单的项目

1.引用 spring security ,这是一种基于spring AOP和Servlet的过滤安全框架.它提供全面的安全性解决方案,同时在web请求级和方法的调用级处理身份确认和授权.在spring framework基础上,spring security充分利用了依赖注入(DI,Dependency Injection)和AOP技术. 下面就让我们用一个小的晓得项目来出初步了解Spring Security 的强大功能吧. 2.项目实战    1)项目的技术架构:maven+spring

【转】Spring+Mybatis+SpringMVC+Maven+MySql搭建实例

林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 摘要:本文主要讲了如何使用Maven来搭建Spring+Mybatis+SpringMVC+MySql的搭建实例,文章写得很详细,有代码有图片,最后也带有运行的效果. 本文工程免费下载 一.准备工作 1. 首先创建一个表: CREATE TABLE `t_user` ( `USER_ID` int(11) NOT NULL AUTO_INCREMENT, `USER_NAME` char(3

Spring+Mybatis+SpringMVC+Maven+MySql搭建实例

林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 摘要:本文主要讲了如何使用Maven来搭建Spring+Mybatis+SpringMVC+MySql的搭建实例,文章写得很详细,有代码有图片,最后也带有运行的效果. 一.准备工作 1. 首先创建一个表: CREATE TABLE `t_user` ( `USER_ID` int(11) NOT NULL AUTO_INCREMENT, `USER_NAME` char(30) NOT NU

Spring+Mybatis+SpringMVC后台与前台分页展示实例(附工程)

林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 摘要:本文实现了一个后台由Spring+Mybatis+SpringMVC组成,分页采用PageHelper,前台展示使用bootstrap-paginator来显示效果的分页实例.整个项目由maven构成.这里主要讲了分页的实例,框架怎么搭建就不再说明,主要是在这里的基础上来增加分页功能的.注意,此文是在这个基础 Spring+Mybatis+SpringMVC+Maven+MySql搭建

Spring+Mybatis+SpringMVC整合

这是来到博客园的第一篇文章,做java开发也好几年了,想从现在开始,在这里将自己会的.学到的做个系统的整理,便于自己掌握的更深.也便于以后复习.还便于给刚入门的攻城师们一点点参考(嘿嘿)--好了,废话不多说,第一篇文章就从最基本的javaWeb开发的三大框架整合开始. 至于为什么是从Spring+Mybatis+SpringMVC开始,而不是Spring+Struts+Hibernate,那是因为现在各个公司使用Spring+Mybatis+SpringMVC的越来越多,而Struts则是使用率

Spring+Mybatis+SpringMVC后台与前台分页展示实例(附工程)(转)

林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 摘要:本文实现了一个后台由Spring+Mybatis+SpringMVC组成,分页采用PageHelper,前台展示使用bootstrap-paginator来显示效果的分页实例.整个项目由maven构成.这里主要讲了分页的实例,框架怎么搭建就不再说明,主要是在这里的基础上来增加分页功能的.注意,此文是在这个基础 Spring+Mybatis+SpringMVC+Maven+MySql搭建

springboot+mybatis+springmvc整合实例

以往的ssm框架整合通常有两种形式,一种是xml形式,一种是注解形式,不管是xml还是注解,基本都会有一大堆xml标签配置,其中有很多重复性的.springboot带给我们的恰恰是"零配置","零配置"不等于什么也不配置,只是说相对于传统的ssm框架的xml配置或是注解配置,要少的多.作为常规的来说,一个ssm框架整合,拿maven来说,首先在src/main/resource下加入jdbc.properties,spring-mvc.xml,spring-myba

Spring+Mybatis+SpringMVC后台与前台分页展示实例

摘要:本文实现了一个后台由spring+Mybatis+SpringMVC组成,分页采用PageHelper,前台展示使用bootstrap-paginator来显示效果的分页实例.整个项目由maven构成.这里主要讲了分页的实例,框架怎么搭建就不再说明,主要是在这里的基础上来增加分页功能的.注意,此文是在这个基础 Spring+Mybatis+SpringMVC+Maven+MySQL搭建实例 之上来做分页的,建议文中看不懂的配置可以看看这里. 整个工程下载(旧版本,日志打印使用log4j,数

MyBatis查询传一个参数时报错:There is no getter for property named &#39;sleevetype&#39; in &#39;class java.lang.Integer

用MyBatis进行查询,传入参数只有一个时(非Map)如int,报错 There is no getter for property named 'sleevetype' in 'class java.lang.Integer 原因在于测试条件写法有误, <if test="sleevetype==0"><!-- 专属 --> exclusive=1 </if> <if test="sleevetype!=0">&l