Mybatis遇到的坑

最近再用mybatis搭建 ssm框架的时候,老是抱一个错误

Error creating document instance.  Cause: org.xml.sax.SAXParseException; lineNumber: 27; columnNumber: 17; 元素类型为 "configuration" 的内容必须匹配 "(properties?,settings?,typeAliases?,typeHandlers?,objectFactory?,objectWrapperFactory?,plugins?,environments?,databaseIdProvider?,mappers?)"。

仔细看了一下自己的配置文件,发现并单词没有拼错啊,后来仔细看了一下说明文档,原来mybatis的配置是有顺序说明的 ,坑啊

MyBatis配置文件中大标签configuration下子标签包括:
configuration
|--- properties
|--- settings
|--- typeAliases
|--- typeHandlers
|--- objectFactory
|--- plugins
|--- environments
|--- |--- environment
|--- |--- |--- transactionManager
|--- |--- |__ dataSource
|__ mappers

另外还遇到一个错误,一并记录下来:

mybatis异常:Could not find result map java.util.Map 问题分析及解决

错误写法

<select id="queryXXXCount" resultMap="java.util.Map" >

正确写法:

<select id="queryXXXCount" resultType="java.util.Map">

注解:

MyBatis中在查询进行select映射的时候,返回类型可以用resultType,也可以用resultMap,resultType是直接表示返回类型的,而resultMap则是对外部ResultMap的引用,但是resultType跟resultMap不能同时存在。

在MyBatis进行查询映射时,其实查询出来的每一个属性都是放在一个对应的Map里面的,其中键是属性名,值则是其对应的值。

①当提供的返回类型属性是resultType时,MyBatis会将Map里面的键值对取出赋给resultType所指定的对象对应的属性。所以其实MyBatis的每一个查询映射的返回类型都是ResultMap,只是当提供的返回类型属性是resultType的时候,MyBatis对自动的给把对应的值赋给resultType所指定对象的属性。

②当提供的返回类型是resultMap时,因为Map不能很好表示领域模型,就需要自己再进一步的把它转化为对应的对象,这常常在复杂查询中很有作用。

时间: 2024-10-13 01:27:13

Mybatis遇到的坑的相关文章

MyBatis日期有坑

使用MyBatis时,可能会遇到日期格式的时间段问题,当数据库的时间为DATE类型时,MyBatis的jdbcType应该使用DATE,否则,有时间会出现莫名的数据找不到的问题,具体原因,可以查看源码,本次只为记录,MyBatis的使用时,需要注意每个数据格式类型的一致性,否则,会出现这类似的问题. jdbcType=DATE,而不是使用jdbcType=TIMESTAMP

mybatis的一些坑

原帖:https://www.cnblogs.com/skyshalo/p/7251378.html 1.提示:Cannot load driver class: com.mysql.jdbc.Driver:之前使用的是老版本,5.1.41的版本,出现这个错误后,我重新加载了最新的版本,然后就没有这个错误了,不过新的版本类名需要修改成这样 <property name="driver" value="com.mysql.cj.jdbc.Driver"/>

Mybatis使用 爬坑记录

1.mapper.xml可以直接 使用map集合, parameterType="java.util.Map" resultType="java.util.Map" 2.mapper.xml的注释必须是 <!--  -->   其他注释将无法识别,sql操作就会发生错误 3. mybatis 映射文件中,if标签判断字符串相等 正确方式: 1. <if test="sex=='Y'.toString()"> and 1=1

spring整合mybatis遇到的坑

java.lang.IllegalStateException: Failed to load ApplicationContext at org.springframework.test.context.CacheAwareContextLoaderDelegate.loadContext(CacheAwareContextLoaderDelegate.java:99) at org.springframework.test.context.DefaultTestContext.getAppl

mybatis的collection查询问题以及使用原生解决方案的结果

之前在springboot+mybatis环境的坑和sql语句简化技巧的第2点提到,数据库的一对多查询可以一次查询多级数据,并且把拿到的数据按id聚合,使父级表和子级表都有数据. 但是这种查询,必然要查询大量的重复父数据,如果不用这种方法,而是分级查询,效果会如何? 要知道这2种数据的查询效率如何,用Python可以简单查询到总时长. 首先用pip install MySQL-python这条指令安装,至于出错解决方法就是https://www.cnblogs.com/superxuezhazh

spring整合mybatis使用&lt;context:property-placeholder&gt;时的坑

背景 最近项目要上线,需要开发一个数据迁移程序.程序的主要功能就是将一个数据库里的数据,查询出来经过一系列处理后导入另一个数据库.考虑到开发的方便快捷.自然想到用spring和mybatis整合一下.甚至用mybatis的自动代码生成,可以省下大量dao层的开发. 整合的坑 之前的项目:以前也有过这种类似的程序,就把spring和mybatis整合的配置直接拿来修改下用.之前的整合配置是这样子的: 1.考虑到数据库url.用户名密码的可配置性,将这些信息放入properties文件.在sprin

mybatis中集成sharing-jdbc采坑

1. mybatis中集成sharing-jdbc采坑 1.1. 错误信息 Caused by: org.apache.ibatis.binding.BindingException: Invalid bound statement (not found) 1.2. 出现场景 我用的mybatis-plus,现在要把ShardingSphere也就是sharing-jdbc集成进来,java集成方式没问题,我打算用springboot的集成方式,因为这样只需要改配置文件就可以添加主从信息,分库分

MyBatis踩坑之SQLProvider转义字符被删除问题

目录 踩坑背景 问题描述 原因追踪 解决方案 方法一 方法二 踩坑背景 项目架构:Spring Boot + MyBatis + MySQL. 使用MyBatis作为ORM框架,jdbc驱动使用的是mariadb-java-client. <dependency> <groupId>org.mariadb.jdbc</groupId> <artifactId>mariadb-java-client</artifactId> <version

mybatis记录:一、mybatis generator在ideal中的一些坑

官网介绍 一.配置 pom文件 <pluginRepositories> <pluginRepository> <id>central</id> <name>Central Repository</name> <!--强制不使用https,否则还要弄网络 --> <url>http://repo.maven.apache.org/maven2</url> <layout>default&