Mybatis mapper标签中配置子标签package的坑及解决

目录
  • mapper标签中配置子标签package的坑
  • Mybatis中mappers标签介绍
    • 配置方式
    • 1.接口所在包
    • 2.相对路径配置
    • 3.类注册引入
    • 4.使用URL绝对路径方式引入(不用)
    • 使用总结

mapper标签中配置子标签package的坑

首先java目录下的.java文件和resources下的.xml文件必须要在同一目录下,但是在resource中创建目录时不要顺手像在java文件中创建包一样,直接创建了com.mapper文件夹,这样不是创建了com - mapper两个文件夹,而是创建了一个叫做com.mapper的文件夹!!!

这样会导致.java文件和.xml文件位置不同,这个位置坑了我一个小时,希望各位注意一下。

Mybatis中mappers标签介绍

MyBatis 是基于 sql 映射配置的框架,sql 语句都写在 Mapper 配置文件中,当构建 SqlSession 类之后,就需要去读取 Mapper 配置文件中的 sql 配置。

而 mappers 标签就是用来配置需要加载的 sql 映射配置文件路径的。

配置方式

mappers 标签下有许多 mapper 标签,每一个 mapper 标签中配置的都是一个独立的映射配置文件的路径,配置方式有以下几种

1.接口所在包

package标签,通过name属性指定mapper接口所在的包名 ,

此时对应的映射文件必须与接口位于同一路径下,并且名称相同

<mappers>
 <!-- mapper接口所在的包名 -->
  <package name="com.i.mapper"/>
</mappers>

2.相对路径配置

mapper标签,通过resource属性引入classpath路径的相对资源

<mappers>
 <!-- 通过resource属性引入classpath路径的相对资源-->
    <mapper resource="com/i/mapper/FlowerMapper.xml"/>
   <mapper resource="com/i/mapper/StudentMapper.xml"/>
   <mapper resource="com/i/mapper/TeacherMapper.xml"/>
</mappers>

3.类注册引入

mapper标签,通过class属性指定mapper接口名称,

此时对应的映射文件必须与接口位于同一路径下,并且名称相同

<mappers>
    <!-- 使用接口信息进行配置 -->
    <mapper class="com.i.mapper.FlowerMapper"/>
    <mapper class="com.i.mapper.StudentMapper"/>
    <mapper class="com.i.mapper.TeacherMapper"/>
</mappers>

4.使用URL绝对路径方式引入(不用)

mapper标签,通过url引入网络资源或者本地磁盘资源

<mappers>
 <mapper url="xml文件访问URL" />
 <mapper url="file:///var/mappers/UserMapper.xml"/>
</mappers>

使用总结

只有配置了 mappers 信息后,MyBatis 才知道去哪里加载 Mapper 映射文件,

开发中,根据项目中 Mapper 的配置偏好,选择整合配置文件的配置方式

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Mybatis 中Mapper使用package方式配置报错的解决方案

    踩了个坑,写出来 Mybatis 中Mapper使用package方式配置报错 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found) UserDaoTest中调用了UserDao的insert方法. 1.项目结构如下 2.UserDao接口 package com.mybatis.dao; import org.apache.ibatis.annotations.Mapper; import

  • Mybatis中Mapper标签总结大全

    一.标签分类 定义SQL语句 insert delete update select 配置关联关系 collection association 配置java对象属性与查询结果集中列名的对应关系 resultMap 控制动态SQL拼接 foreach if choose 格式化输出 where set trim 定义常量 sql 其他 include 二.标签总结 1. 基础SQL标签 1.1 查询select 标签属性 id 唯一的名称,对应dao中mapper的接口名称 paramterTy

  • mybatis的mapper.xml中resultMap标签的使用详解

    1.前言 最近博主在做一个ssm框架的共享汽车管理系统,其中,数据库字段设计的有下划线方式,a_username,然后在写mapper.xml里面的sql语句的时候,一直出现查询语句查询的值为null的情况.或者是resultMap标签和驼峰规则不太明白的同学,可以看这里. 于是顺便梳理一下. 2.关于resultMap 2.1.什么是resultMap? 在mybatis中有一个resultMap标签,它是为了映射select查询出来结果的集合,其主要作用是将实体类中的字段与数据库表中的字段进

  • Mybatis mapper标签中配置子标签package的坑及解决

    目录 mapper标签中配置子标签package的坑 Mybatis中mappers标签介绍 配置方式 1.接口所在包 2.相对路径配置 3.类注册引入 4.使用URL绝对路径方式引入(不用) 使用总结 mapper标签中配置子标签package的坑 首先java目录下的.java文件和resources下的.xml文件必须要在同一目录下,但是在resource中创建目录时不要顺手像在java文件中创建包一样,直接创建了com.mapper文件夹,这样不是创建了com - mapper两个文件夹

  • MyBatis动态SQL中的trim标签的使用方法

    trim标记是一个格式化的标记,可以完成set或者是where标记的功能,如下代码: 1. select * from user <trim prefix="WHERE" prefixoverride="AND |OR"> <if test="name != null and name.length()>0"> AND name=#{name}</if> <if test="gender

  • Mybatis sqlMapConfig.xml中的mappers标签使用

    目录 sqlMapConfig.xml中的mappers标签 mappers(映射配置) 1.1:通过resource加载单个映射文件 1.2:通过mapper接口加载单个映射文件 1.3:批量加载mapper(推荐使用) sqlmapconfig核心标签说明以及配置 配置项详解 配置示例 sqlMapConfig.xml中的mappers标签 mappers(映射配置) 1.1:通过resource加载单个映射文件 < !– 加载映射文件 –> < mappers> < !

  • MyBatis Mapper.xml中的命名空间及命名方式

    目录 Mapper.xml相关使用 命名空间(Namespaces) 命名解析 MyBatis中mapper.xml命名空间错误 项目场景 问题描述 原因分析 解决方案 Mapper.xml相关使用 命名空间(Namespaces) 命名空间(Namespaces) 在之前版本的MyBatis中是可选的,这样容易引起混淆因此毫无益处.现在命名空间则是必须的,且易于简单地用更长的完完全限定名来隔离语句. 命名空间使得你所见到的接口绑定成为可能,尽管你觉得这些东西未必用得上,你还是应该遵循这里的规定

  • mybatis mapper.xml中如何根据数据库类型选择对应SQL语句

    目录 mapper.xml根据数据库类型选择对应SQL语句 1.spring-database.xml文件中配置 2.mapper.xml文件中配置 mapper.xml动态SQL语句用法 if trim where set choose(when.otherwise) foreach mapper.xml根据数据库类型选择对应SQL语句 1.spring-database.xml文件中配置   <bean id="vendorProperties" class="or

  • Mysql中关于0值判断的坑及解决

    目录 Mysql关于0值判断的坑 简练问题如下 原因 解决方式 问题引申 Mysql判断数值0误区总结 Mysql关于0值判断的坑 最近遇到一个Mysql返回多值的问题,最后发现是mysql过滤条件中0值判断的问题. 简练问题如下 有个INT字段a,默认值为0,程序传入的判断条件是 a = 'abacd'. 传入的是一个字符串,结果a=0的所有数据都返回了. 原因 mysql会在逻辑判断时,如果是整型判断,但是传入的是字符串,如果字符串不是数字,则字符串会被转换为0.所以, 这段代码实际判断的条

  • mybatis 映射文件中if标签判断字符串相等的两种方式

    mybatis 映射文件中,if标签判断字符串相等,两种方式: 因为mybatis映射文件,是使用的ognl表达式,所以在判断字符串sex变量是否是字符串Y的时候, <if test="sex=='Y'.toString()"> <if test = 'sex== "Y"'> 注意: 不能使用 <if test="sex=='Y'"> and 1=1 </if> 因为mybatis会把'Y'解析为字

  • resultMap标签中里的collection标签详解

    目录 resultMap标签中的collection标签 collection(一对多) collection标签中各属性的说明 resultMap标签中的collection标签 collection(一对多) 元素的作用和association元素的作用差不多一样,事实上,它们非常类似,也是映射到JavaBean的某个“复杂类型” 属性,只不过这个属性是一个集合列表,即JavaBean内部嵌套一个复杂数据类型(集合).和使用association元素一样,我们使用嵌套查询, 或者从连接中嵌套

  • Mybatis的mapper.xml中if标签test判断的用法说明

    目录 mapper.xml中if标签test判断的用法 1. 字符串等于条件的两种写法 2. 非空条件的判断 3. 判断数组是否包含某个元素 mapper.xml <if test>书写时候的一些坑 1. 分页 2. 字符串形式的数据比较 mapper.xml中if标签test判断的用法 1. 字符串等于条件的两种写法 ① 将双引号和单引号的位置互换 <if test=' testString != null and testString == "A" '>  

随机推荐