`

Mybatis错误和知识总结

    博客分类:
  • java
阅读更多

1.功能正常,但是读出来的数据是null

    原因: Mapper.xml中的select语句写错,或者查错了表

           比如我要查的表时student

            结果我的sql语句是 select * from teacher where id=#{id};

 

2.报错invalid types () or values ()解决方法 

原因:

1) Bean函数中的get/set方法与成员变量不一。

2) 构造函数被重载过,但是没有空的构造函数。

3) 最好不要使用简单类型,如int, long等,改用对象模式Integer, Long等。在写条件查询时会用到判断<if xxx !  = null > … </if>的

 

 

根据网上的解答,我发现自己犯了第二条错误, 构造函数被重载过,但是没有空的构造函数。

那么为什么会这样呢?

因为mybatis执行sql语句后,会根据反射机制返回一个对象,反射默认是根据空构造函数来构造一个对象的,如果重载了有参数的构造函数,那么缺省空构造函数就没有了,就报错

 

3. Mapped Statements collection does not contain value for : 
错误原因有几种: 
3.1、mapper.xml中没有加入namespace 
3.2、mapper.xml中的方法和接口mapper的方法不对应 
3.3、mapper.xml没有加入到mybatis-config.xml中(即总的配置文件),例外:配置了mapper文件的包路径的除外 
3.4、mapper.xml文件名和所写的mapper名称不相同。

 

4.查询一个数据用selectOne,查询一堆数据用selectList

 

5.用接口和注解的方式,不用写映射文件,但是还是要注册!!!

 

6.一对一关联表查询的时候,出现了

Could not set property 'teacher' of 'class s1.Classes' with value 'teacher [id=1  name=ert]

出现这种情况的原因就是 我把Classes类中的teacher定义成了int类型

 

错误:    private int id;                  正确  private int id;  
           private String name;                 private String name;
           private int teacher;                   private Teacher teacher;

 

7.一对一关联表查询的时候,一定要在数据库中先关联表!!!

  代码示例: 

ALTER TABLE class ADD CONSTRAINT fk_teacher_id FOREIGN KEY (teacher_id) REFERENCES teacher(t_id);

 

8.为mybatis配置log4j.properties的方法:

  只要在src目录下创建一个log4j.properties文件,然后设置好代码就好了,非常简单,目录结构如下图



 

 9.log4j.properties文件的配置代码:

  

log4j.rootLogger=DEBUG, Console  
  
#Console  
log4j.appender.Console=org.apache.log4j.ConsoleAppender  
log4j.appender.Console.layout=org.apache.log4j.PatternLayout  
log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n  
  
log4j.logger.java.sql.ResultSet=INFO  
log4j.logger.org.apache=INFO  
log4j.logger.java.sql.Connection=DEBUG  
log4j.logger.java.sql.Statement=DEBUG  
log4j.logger.java.sql.PreparedStatement=DEBUG

 

 10. mybatis中,一个session对应一个数据库会话,

    在SqlSessionFactory.openSession(true)  //true表示自动提交,false表示关闭自动提交

   所以session有 session.commit()

                         session.close()

                          session.rollback()

 

11.在一次简单查询中,根据日志记录,发现能查到数据,但是myeclipse中显示的结果是null

   后来找了很多资料才发现,实体类的属性名和数据库中字段名不对应,需要告诉编译器

  有2种方式: 

 

第一种:

//注意 顺序很重要,先写字段名,再写属性名, 下面例子中,order_id是表的字段名,id是实体类的属性名

select order_id id,order_name name,order_price from student where order_id=#{id} 

 

第二种:

   方法2: 
 
 <select id="getAllStudent" resultMap="s1.Student">    //将resultType改成resultMap
         select * from student
     </select>
 
  <resultMap type="order" id="getOrderMap">
          <id property="id" column="order_id"  />           //主键用id标示
         <result  property="name" column="order_name"  />    //一般字段用result
         <result  property="price" column="order_price"  /> 
     </resultMap>

 

12.mybatis中Mapper.xml中namespace的作用:外部调用需要知道它的namespace,根据namespace找到对应的Mapper.xml,再根据MybatisConfig.xml(Mybatis全局配置文件),找到Mapper的路径,读取其中的内容

 

13.报错内容:Type interface s1.MyMapper is already known to the MapperRegistry.

   就是congfi.xml中重复注册了映射文件,去掉重复的就可以了

  • 大小: 6.9 KB
分享到:
评论

相关推荐

    servlet3.0与mybatis整合的示例

    在Java Web开发中,Servlet和...总结,Servlet3.0与MyBatis的整合,使得Java Web应用的开发更加便捷,同时充分利用了两者的优势,提高了开发效率。通过理解上述知识点,开发者可以轻松地在实际项目中实现这一整合。

    idea插件(mybatis插件)

    这通常包括代码提示、自动完成、错误检查和快速修复等功能,使得在IDEA中使用Mybatis变得更加顺滑。 标签"工具"表明这个插件是一个开发辅助工具,是开发者在编程过程中可以利用的一种资源,旨在简化工作流程,提升...

    黑马Mybatis教案 资源(无视频)

    这里提到的笔记可能包括对Mybatis核心概念的理解、实际项目中遇到的问题及解决办法、最佳实践等方面的总结。通过阅读他人的笔记,开发者可以更快地理解和掌握Mybatis的精髓,避免重复踩坑。 5. **Mybatis的核心概念...

    mybatis-3.zip

    总结来说,MyBatis-3.zip文件包含的是MyBatis 3.4.6版本的DTD文件,它们是理解和使用MyBatis框架的关键。通过解析并遵循这些DTD定义,开发者可以构建出符合规范的MyBatis配置和映射文件,从而高效地进行数据库操作。...

    MyBatis_3.4.6中文参考

    通过本文介绍的知识点,读者可以了解到 MyBatis 的基本概念、安装方法、配置方式以及如何使用 SqlSessionFactory 和 SqlSession 进行数据库操作。此外,还介绍了如何通过 XML 或 Java 注解定义 SQL 映射,以便更好地...

    springboot+mybatis等测试项目

    总结一下,这个"springboot+mybatis等测试项目"主要涵盖了以下知识点: 1. Spring Boot的自动配置和起步依赖 2. 使用配置文件连接数据库 3. jasypt敏感信息加密 4. MyBatis的SQL映射和接口绑定 5. 数据库分页查询 6....

    Java相关知识总结,包括Java基础、MySQL、Springboot、mybatis、Redis、rabbitM.zip

    在这个压缩包中,我们看到涉及到的主要知识点包括Java基础、MySQL数据库管理、Spring Boot微服务开发、MyBatis持久层框架、Redis缓存技术和RabbitMQ消息队列。接下来,我们将逐一深入探讨这些关键领域的核心概念和...

    MyBatis-讲义-2.2.docx

    ### MyBatis框架知识点概述 #### 一、MyBatis简介 MyBatis是一个支持普通SQL查询、存储过程以及高级映射的优秀持久层框架。它最初源自Apache的一个开源项目iBatis,2010年该项目从Apache Software Foundation迁移到...

    Java核心知识总结包括Java基础、并发、MySQL、Springboot、MyBatis、Redis、RabbitMQ

    - 异常处理:Java通过try-catch-finally语句处理程序运行时可能出现的错误。 - 内存管理:Java使用垃圾回收机制自动管理内存,但理解如何避免内存泄漏也很关键。 - 泛型:提高代码复用性,确保类型安全。 2. **...

    对mybatis3 基本环境搭建优化(二)

    总结,MyBatis3的环境搭建优化涉及多个层面,从基础配置到最佳实践,每个环节都需要细致考虑,以达到提升开发效率和系统性能的目的。在实际开发中,结合具体业务场景,灵活运用上述知识点,可以构建出高效、可维护的...

    java 基础知识总结(经典)

    这篇“Java基础知识总结(经典)”涵盖了Java开发中的核心概念和重要知识点,旨在为初学者和有经验的开发者提供一个全面的回顾。以下是主要的学习点: 1. **Java环境配置**:在开始编程之前,必须安装Java ...

    intellij mybatis 插件2.31

    总结来说,对于在IntelliJ IDEA 14.1.177中遇到的MyBatis插件问题,可以通过更新IDE、插件、检查配置、清理构建和查看日志等方式解决。同时,MyBatis-Plus作为一个强大的MyBatis扩展,能够帮助开发者更高效地进行...

    springboot+mybatis工作中出现的问题汇总和学习新知识的总结.docx

    总结,SpringBoot+Mybatis的应用开发中,前端与后端的交互、数据传输的格式、异常处理、服务间的通信以及代码的自动生成都是重要的知识点。在实际工作中,理解并熟练掌握这些技能,可以提高开发效率,减少错误,提升...

    mybatis第一阶段

    ### MyBatis 第一阶段知识点概述 #### 一、MyBatis简介与演变历程 - **起源与发展**:MyBatis起源于Apache的一个开源项目iBatis,在2010年由Apache Software Foundation迁移到Google Code,并更名为MyBatis。2013年...

    传智播客_Springmvc+Mybatis全套视频+代码+文档+教案

    通过系统地学习Spring MVC和MyBatis的基本原理、核心特性和实战应用,开发者能够更好地掌握这两种框架的使用技巧,并能够在实际项目中灵活运用。此外,结合具体的实战案例分析,可以帮助开发者更快地理解并掌握这些...

    mybatis+springmvc配置

    在构建一个基于Mybatis和SpringMVC的项目时,我们需要按照一系列步骤进行配置。下面将详细阐述这些步骤涉及的关键知识点: 第一步:添加依赖包 在项目中,我们需要引入Mybatis、SpringMVC以及相关的库,如Spring...

    mybatis-3.2.x.jar

    MyBatis是一个优秀的持久...总结来说,MyBatis-3.2.x.jar是MyBatis框架的一个版本,它包含了一系列用于简化数据库操作的工具和特性。通过理解并熟练运用这些知识点,开发者可以构建出高效、易于维护的数据库应用程序。

    mybatis【mapper.xml类提示eclipse插件】【正式版下载】

    ### MyBatis Eclipse 插件知识点详解 #### 一、MyBatis简介 MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。...

    MyBatis-3.4.7中文用户指南

    ### MyBatis 3.4.7 中文用户指南知识点概览 #### 一、MyBatis概述 - **定义**:MyBatis是一款优秀的持久层框架,支持自定义SQL语句、存储过程及高级映射功能。它极大简化了JDBC编程模式,通过XML配置文件或注解的...

    spring-boot-starter-mybatis-spring-boot-1.2.1.zip

    总结,Spring Boot与MyBatis的集成提供了简洁的配置方式和高效的开发体验。通过理解并熟练掌握这些知识点,开发者能够在Spring Boot环境中充分利用MyBatis的强大功能,构建出高性能的Java Web应用。同时,随着版本的...

Global site tag (gtag.js) - Google Analytics