文档章节

Mybatis mapper接口与xml文件路径分离

非沧海一粟不随波逐流
 非沧海一粟不随波逐流
发布于 08/14 10:45
字数 705
阅读 39
收藏 0

为什么分离

 

对于Maven项目,IntelliJ IDEA默认是不处理src/main/java中的非java文件的,不专门在pom.xml中配置<resources>是会报错的,参考这里

所以src/main/java中最好不要出现非java文件。实际上,将mapper.xml放在src/main/resources中比较合适。

 

如何分离

 

首先,mapper肯定是不能配在mybatis-config.xml的<Mappers>里了,因为里面的方式都需要接口和xml在统一文件夹下

 

<!-- 将sql映射注册到全局配置中-->
    <mappers>

        <!--
            mapper 单个注册(mapper如果多的话,不太可能用这种方式)
                resource:引用类路径下的文件
                url:引用磁盘路径下的资源
                class,引用接口
            package 批量注册(基本上使用这种方式)
                name:mapper接口与mapper.xml所在的包名
        -->

        <!-- 第一种:注册sql映射文件-->
        <mapper resource="com/spldeolin/mapper/UserMapper.xml" />

        <!-- 第二种:注册接口   sql映射文件必须与接口同名,并且放在同一目录下-->
        <!--<mapper class="com.spldeolin.mapper.UserMapper" />-->

        <!-- 第三种:注册基于注解的接口  基于注解   没有sql映射文件,所有的sql都是利用注解写在接口上-->
        <!--<mapper class="com.spldeolin.mapper.TeacherMapper" />-->

        <!-- 第四种:批量注册  需要将sql配置文件和接口放到同一目录下-->
        <package name="com.spldeolin.mapper" />

    </mappers>

 

 

所以不在mybatis-config.xml中进行全局配置。

 

其次,在sqlSessionFactory.mapperLocations指定mapper.xml的路径,在mapperScannerConfigurer.basePackage指定mapper接口的包名。

 

最终,目录结构、spring-mybatis.xml和mybatis.xml大致是这样的。

目录结构(其他内容省略)

 

spring-mybatis.xml

 

<?xml version="1.0" encoding="UTF-8" ?>
<beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:context="http://www.springframework.org/schema/context"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.springframework.org/schema/beans
                http://www.springframework.org/schema/beans/spring-beans.xsd
                http://www.springframework.org/schema/context
                http://www.springframework.org/schema/context/spring-context.xsd">

    <!--DB配置文件-->
    <context:property-placeholder location="classpath:db.properties"
            ignore-unresolvable="true" />

    <!--数据源-->
    <bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource">
        <property name="driverClassName" value="${jdbc.driver}" />
        <property name="url" value="${jdbc.url}" />
        <property name="username" value="${jdbc.username}" />
        <property name="password" value="${jdbc.password}" />
    </bean>

    <!--qlSessionFactory-->
    <bean id="sqlSessionFactory"
            class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <!--Mybatis配置文件-->
        <property name="configLocation"
                value="classpath:mybatis-config.xml" />
        <!--mapper.xml所在位置-->
        <property name="mapperLocations" value="classpath:mapper/*Mapper.xml" />
        <!--指定需要使用别名的PO类所在的包-->
        <property name="typeAliasesPackage"
                value="com.spldeolin.demoapp.po" />
    </bean>

    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <!--mapper接口所在的包-->
        <property name="basePackage" value="com.spldeolin.demoapp.dao" />
    </bean>

</beans>

复制代码

 

mybatis-config.xml

 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>

    <!-- 其他全局配置 -->
    <settings>
        <setting name="logImpl" value="LOG4J2" />
        <setting name="cacheEnabled" value="true" />
    </settings>

    <!--全局分页插件-->
    <plugins>
        <plugin interceptor="com.github.pagehelper.PageHelper">
            <property name="dialect" value="mysql" />
            <property name="offsetAsPageNum" value="true" />
            <property name="rowBoundsWithCount" value="true" />
            <property name="pageSizeZero" value="true" />
            <property name="reasonable" value="false" />
            <property name="returnPageInfo" value="check" />
            <property name="params" value="pageNum=start;pageSize=limit;" />
        </plugin>
    </plugins>

</configuration>

 

本文转载自:https://www.cnblogs.com/deolin/p/8195565.html

非沧海一粟不随波逐流
粉丝 4
博文 84
码字总数 3146
作品 0
无锡
程序员
私信 提问
Mybatis之加载Mapper接口和mapper XML

概述 Mybatis加载Mapper接口有两个入口:一个是指定mapper xml,另一个是指定Mapper接口。 mapper xml 通过指定mapper xml的路径,Mybatis使用XMLMapperBuilder类来加载解析mapper xml文件。...

cregu
03/30
53
0
springBoot 整合mybatis

springBoot 整合mybatis s使用IDEA开发,为了提高效率,推荐使用插件: 说明:上述插件可以在低版本的IDEA中找到破解版 项目结构 说明: mapper/UserMapper.xml 是与接口 对应的mapper文件 UserMa...

黄威
2018/07/06
46
0
Struts2、Spring3、MyBatis3整合ExtJS,完成ColumnTree 【一】

开发环境: System:Windows WebBrowser:IE6+、Firefox3+ JavaEE Server:tomcat5.0.2.8、tomcat6 IDE:eclipse、MyEclipse 8 Database:MySQL 开发依赖库: JavaEE5、Spring 3.0.5、Mybat......

ibm_hoojo
2011/05/11
0
0
MyBatis 入门开发 ----Mapper接口开发

Mapper接口开发需要遵循以下规范: Mapper.xml文件中的namespace与mapper接口的类路径相同。 Mapper接口方法名和Mapper.xml中定义的每个statement的id相同 Mapper接口方法的输入参数类型和m...

我是小谷粒
2017/12/07
0
0
Mybatis 入门案例 2 ---- mapper 代理的方式

我们只需要编写DAO接口和mapper.xml文件即可,DAO接口实现对象由mybatis自动生成代理对象。 如: 一、为什么不使用原始的DAO方式开发呢? 1、dao的实现类中存在重复代码,整个mybatis操作的过...

故新
2017/11/07
0
0

没有更多内容

加载失败,请刷新页面

加载更多

spring cloud

一、从面试题入手 1.1、什么事微服务 1.2、微服务之间如何独立通讯的 1.3、springCloud和Dubbo有哪些区别 1.通信机制:DUbbo基于RPC远程过程调用;微服务cloud基于http restFUL API 1.4、spr...

榴莲黑芝麻糊
4分钟前
0
0
Executor线程池原理与源码解读

线程池为线程生命周期的开销和资源不足问题提供了解决方 案。通过对多个任务重用线程,线程创建的开销被分摊到了多个任务上。 线程实现方式 Thread、Runnable、Callable //实现Runnable接口的...

小强的进阶之路
昨天
6
0
maven 环境隔离

解决问题 即 在 resource 文件夹下面 ,新增对应的资源配置文件夹,对应 开发,测试,生产的不同的配置内容 <resources> <resource> <directory>src/main/resources.${deplo......

之渊
昨天
8
0
详解箭头函数和普通函数的区别以及箭头函数的注意事项、不适用场景

箭头函数是ES6的API,相信很多人都知道,因为其语法上相对于普通函数更简洁,深受大家的喜爱。就是这种我们日常开发中一直在使用的API,大部分同学却对它的了解程度还是不够深... 普通函数和...

OBKoro1
昨天
7
0
轻量级 HTTP(s) 代理 TinyProxy

CentOS 下安装 TinyProxy yum install -y tinyproxy 启动、停止、重启 # 启动service tinyproxy start# 停止service tinyproxy stop# 重启service tinyproxy restart 相关配置 默认...

Anoyi
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部