为什么我的mybatis存储html页面的所有代码到mysql数据库的text类型中 直接存会报错。

这是代码

public static void get(){
        try {
            BufferedReader br=new BufferedReader(new FileReader(new File("tt.html")));
            StringBuffer s=new StringBuffer();
            String b;
            while ((b=br.readLine())!=null){
                s.append(b+"\r\n");
            }
            br.close();

            InputStream inputStream= Resources.getResourceAsStream("mybatis_config.xml");
            SqlSessionFactory sqlSessionFactory= new SqlSessionFactoryBuilder().build(inputStream);
            SqlSession sqlSession=sqlSessionFactory.openSession();
            ArticleDao articleDao=sqlSession.getMapper(ArticleDao.class);
            TArticle article=new TArticle();

            article.setContent(s.toString());
            System.out.println(article.getContent());
            article.setUuid(UUID.randomUUID().toString().replace("-",""));
            article.setDelsign("1");
            article.setInserttime("1");
            article.setIscollection("1");
            article.setIsfabulous("1");
            article.setIsopen("1");
            article.setPointnumber("1");
            article.setTitle("1");
            article.setTypeid("1");
            article.setUpdatetime("1");
            article.setUrl("1");
            article.setUserid("1");

            articleDao.add(article);
            sqlSession.commit();
            sqlSession.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

下面是异常

Exception in thread "main" org.apache.ibatis.exceptions.PersistenceException: 
### Error committing transaction.  Cause: org.apache.ibatis.executor.BatchExecutorException: cn.autually.dao.ArticleDao.add (batch index #1) failed. Cause: java.sql.BatchUpdateException: No value specified for parameter 1
### Cause: org.apache.ibatis.executor.BatchExecutorException: cn.autually.dao.ArticleDao.add (batch index #1) failed. Cause: java.sql.BatchUpdateException: No value specified for parameter 1
    at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30)
    at org.apache.ibatis.session.defaults.DefaultSqlSession.commit(DefaultSqlSession.java:227)
    at org.apache.ibatis.session.defaults.DefaultSqlSession.commit(DefaultSqlSession.java:218)
    at service.sss.get(sss.java:59)
    at service.sss.main(sss.java:25)
Caused by: org.apache.ibatis.executor.BatchExecutorException: cn.autually.dao.ArticleDao.add (batch index #1) failed. Cause: java.sql.BatchUpdateException: No value specified for parameter 1
    at org.apache.ibatis.executor.BatchExecutor.doFlushStatements(BatchExecutor.java:146)
    at org.apache.ibatis.executor.BaseExecutor.flushStatements(BaseExecutor.java:129)
    at org.apache.ibatis.executor.BaseExecutor.flushStatements(BaseExecutor.java:122)
    at org.apache.ibatis.executor.BaseExecutor.commit(BaseExecutor.java:242)
    at org.apache.ibatis.executor.CachingExecutor.commit(CachingExecutor.java:119)
    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 org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:63)
    at com.sun.proxy.$Proxy11.commit(Unknown Source)
    at org.apache.ibatis.session.defaults.DefaultSqlSession.commit(DefaultSqlSession.java:224)
    ... 3 more
Caused by: java.sql.BatchUpdateException: No value specified for parameter 1
    at com.mysql.jdbc.PreparedStatement.executeBatchSerially(PreparedStatement.java:1666)
    at com.mysql.jdbc.PreparedStatement.executeBatch(PreparedStatement.java:1082)
    at org.apache.ibatis.executor.BatchExecutor.doFlushStatements(BatchExecutor.java:122)
    ... 14 more

我试着输出了读出来的s,跟html的内容一样,但就是存不到数据库里,不知道为什么,求大神指点

宝慕林4294392
浏览 1563回答 3
3回答

Qyouu

找到问题了,是因为我用的自己写的注解动态sql,如果储存的字符串中有单引号''就会导致录不进去,没有单引号就没问题,用mybatis逆向工程生成的mapper执行一次储存就没问题.....这个是我暂时发现的直接原因,至于根本原因,还不清楚...

杨魅力

failed. Cause: java.sql.BatchUpdateException: No value specified for parameter 1 这句话说你sql语句的一个参数没有指定值给他比如: select * from employee where name =? 然后name没有指定值给它,就会报这个错误。

慕码人8056858

前面实体类中 那么多 set 1的 这些数据类型都是字符串吗??
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java