一.  使用sqlSessionFactory mapperLocations 进行加载

<!-- SessionFactory -->

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean" scope="singleton">

<property name="dataSource" ref="dataSource" />

<property name="configLocation" value="classpath:mybatis-config.xml" />

<!-- 映射文件路径,可以集中写到一个地方,也可以与dao写到一个地方,支持多个路径,支持通配符-->

<property name="mapperLocations" value="classpath:mapper/*.xml,classpath:com/sunny/shop/*/dao/*.xml">

</property>

</bean>

此种方法可以使用通配符, 可以指定位置, 可以使用多个位置

二.   使用MapperScannerConfigurer进行扫描

<!-- 扫描指定包下的所有接口,创建代理类,如果mysql的配置文件名与接口名相同的话,可以不用一一配置 -->

<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">

<property name="basePackage" value="com.sunny.shop" />

<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>

</bean>

此种方法可以扫描指定包下的接口, 如果需要扫描配置文件, 则配置文件须与对应的DAO接口处于同一目录, 且名字必须相同

.配置 mybatis mapper

<mappers>

<!-- 既可写映射文件, 也可写对应的接口 -->

<!--<mapper resource="com/mybatis/student/StudentMapper.xml" />

<mapper resource="com/mybatis/classes/ClassesMapper.xml" />

<mapper class="com.sunny.shop.user.dao.UserDao" />

-->

</mappers>

PS:下面给大家介绍下mybatis 加载配置文件的两种方式

package com.atguigu.day03_mybaits.test;

import java.io.IOException;

import java.io.InputStream;

import java.io.Reader;

import org.apache.ibatis.io.Resources;

import org.apache.ibatis.session.SqlSession;

import org.apache.ibatis.session.SqlSessionFactory;

import org.apache.ibatis.session.SqlSessionFactoryBuilder;

public class Test {

public static void test1(){

///加载mybatis的配置文件(它也加载关联的映射文件)

String str="conf.xml";

InputStream is=Test.class.getClassLoader().getResourceAsStream(str);

//构建sqlSession的工厂

SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(is);

SqlSession session=factory.openSession();

//映射sql的标识字符串,是在影射文件中找到namespace+“”+select中的id

String statement="com.atguigu.day03_mybaits.userMapper.getUser";

//执行查询返回一个唯一user对象的sql

User user=session.selectOne(statement, 1);

System.out.println(user);

}

public static void test2() throws IOException{

///加载mybatis的配置文件(它也加载关联的映射文件)

String resource = "conf.xml";

//加载mybatis的配置文件(它也加载关联的映射文件)

Reader reader = Resources.getResourceAsReader(resource);

//构建sqlSession的工厂

SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(reader);

SqlSession session=factory.openSession();

//映射sql的标识字符串,是在影射文件中找到namespace+“”+select中的id

String statement="com.atguigu.day03_mybaits.userMapper.getUser";

//执行查询返回一个唯一user对象的sql

User user=session.selectOne(statement, 2);

System.out.println(user);

}

public static void main(String[] args) throws IOException {

test1();

test2();

}

}

mybatis 加载配置文件的方法的更多相关文章

  1. 【Nutch2.2.1源代码分析之4】Nutch加载配置文件的方法

    小结: (1)在nutch中,一般通过ToolRunner来运行hadoop job,此方法可以方便的通过ToolRunner.run(Configuration conf,Tool tool,Str ...

  2. mybatis加载配置文件详解

    spring整合Mybatis后,SqlSessionFactory的创建由spring进行了代理,以下是SqlSessionFactory创建的流程 SqlSessionFactoryBean: p ...

  3. mybatis 加载配置文件的两种方式

    package com.atguigu.day03_mybaits.test; import java.io.IOException;import java.io.InputStream;import ...

  4. java动态加载配置文件

    最近项目中需要做定时任务,即定时数据库的备份.定时时间用户可以在界面中配置,要求配置修改好立即生效. 想不到什么好办法.下面是一种实现思路 把用户配置的时间存到properties配置文件中,定时任务 ...

  5. log4j和log4j2怎么动态加载配置文件

    应用场景与问题 当项目在运行时,我们如果需要修改log4j 1.X或者log4j2的配置文件,一般来说我们是不能直接将项目停止运行再来修改文件重新部署的.于是就有这样一个问题:如何在不停止当前项目的运 ...

  6. flask开启debug模式的两种方法、加载配置文件的两种方法、URL传参的四种方法

    from flask import Flask app = Flask(__name__) # app.config.update(DEBUG=True)#开启debug模式 #加载配置文件方法一 # ...

  7. flask加载配置文件的三种方法

    1.第一种方法也是我们最长用到的,包括我们项目中也是采用第一种的方法,加载配置文件 配置信息全部写在config.py里面,在主app.py的文件中写入 import config app.confi ...

  8. 抛开 Spring ,你知道 MyBatis 加载 Mapper 的底层原理吗?

    原文链接:抛开 Spring ,你知道 MyBatis 加载 Mapper 的底层原理吗? 大家都知道,利用 Spring 整合 MyBatis,我们可以直接利用 @MapperScan 注解或者 @ ...

  9. tmux不自动加载配置文件.tmux.conf

    /********************************************************************** * tmux不自动加载配置文件.tmux.conf * ...

随机推荐

  1. LD-sketch源码阅读

    目录 util.h hash.hpp/cpp mangle函数 GenHashSeed函数 AwareHash模块 LDSketch.hpp/cpp LDSketch更新函数,对一个sketch插入键 ...

  2. react-router里使用history

    import React, { Component } from 'react';import {Router, Route, Switch} from 'react-router-dom';impo ...

  3. 【Linux】计划任务

    计划任务的意义 计划任务 创建和管理在指定时间自动执行的任务 注意事项 要使任务计划在指定时间自动运行,计划任务的服务必须是启动的 计划任务分类 使用at命令调用atd进程设置在某个特定的时间,执行一 ...

  4. error:0906D064:PEM routines:PEM_read_bio:bad base64 decode

    今天在使用easywechat对接企业打款到银行卡时,遇到了两个错误 error:0906D064:PEM routines:PEM_read_bio:bad base64 decode 和 erro ...

  5. PHP 扩展 trie-tree, swoole过滤敏感词方案

    在一些app,web中评论以及一些文章会看到一些*等,除了特定的不显示外,我们会把用户输入的一些敏感字符做处理,具体显示为*还是其他字符按照业务区实现. 下面简单介绍下业务处理. 原文地址:小时刻个人 ...

  6. 03.搭建Spark集群(CentOS7+Spark2.1.1+Hadoop2.8.0)

    接上一篇:https://www.cnblogs.com/yjm0330/p/10077076.html 一.下载安装scala 1.官网下载 2.spar01和02都建立/opt/scala目录,解 ...

  7. django数据库迁移-15

    目录 1.迁移 1.生成迁移文件 2.执行迁移命令 添加测试数据 1.迁移 创建完模型类后,并没有真正的在数据库中创建了数据表,需要执行迁移命令,在数据表中创建数据表. 1.生成迁移文件 manage ...

  8. hadoop伪分布式组件安装

    一.版本建议 Centos V7.5 Java V1.8 Hadoop V2.7.6 Hive V2.3.3 Mysql V5.7 Spark V2.3 Scala V2.12.6 Flume V1. ...

  9. 在vim编辑器中实现python的tab补全

    在vim编辑器中实现python的tab补全 在vim编辑器中实现python tab补全插件有Pydiction,Pydiction可以实现下面python代码的自动补全:   1.简单python ...

  10. 生成并调用so动态库

    本文更新于2019-01-03. 生成库 头文件fn.h如下: #ifndef __FN_H__ #define __FN_H__ #ifdef __cplusplus extern "C& ...