mybatis 加载配置文件的方法
一. 使用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 加载配置文件的方法的更多相关文章
- 【Nutch2.2.1源代码分析之4】Nutch加载配置文件的方法
小结: (1)在nutch中,一般通过ToolRunner来运行hadoop job,此方法可以方便的通过ToolRunner.run(Configuration conf,Tool tool,Str ...
- mybatis加载配置文件详解
spring整合Mybatis后,SqlSessionFactory的创建由spring进行了代理,以下是SqlSessionFactory创建的流程 SqlSessionFactoryBean: p ...
- mybatis 加载配置文件的两种方式
package com.atguigu.day03_mybaits.test; import java.io.IOException;import java.io.InputStream;import ...
- java动态加载配置文件
最近项目中需要做定时任务,即定时数据库的备份.定时时间用户可以在界面中配置,要求配置修改好立即生效. 想不到什么好办法.下面是一种实现思路 把用户配置的时间存到properties配置文件中,定时任务 ...
- log4j和log4j2怎么动态加载配置文件
应用场景与问题 当项目在运行时,我们如果需要修改log4j 1.X或者log4j2的配置文件,一般来说我们是不能直接将项目停止运行再来修改文件重新部署的.于是就有这样一个问题:如何在不停止当前项目的运 ...
- flask开启debug模式的两种方法、加载配置文件的两种方法、URL传参的四种方法
from flask import Flask app = Flask(__name__) # app.config.update(DEBUG=True)#开启debug模式 #加载配置文件方法一 # ...
- flask加载配置文件的三种方法
1.第一种方法也是我们最长用到的,包括我们项目中也是采用第一种的方法,加载配置文件 配置信息全部写在config.py里面,在主app.py的文件中写入 import config app.confi ...
- 抛开 Spring ,你知道 MyBatis 加载 Mapper 的底层原理吗?
原文链接:抛开 Spring ,你知道 MyBatis 加载 Mapper 的底层原理吗? 大家都知道,利用 Spring 整合 MyBatis,我们可以直接利用 @MapperScan 注解或者 @ ...
- tmux不自动加载配置文件.tmux.conf
/********************************************************************** * tmux不自动加载配置文件.tmux.conf * ...
随机推荐
- java 企业门户网站 源码 自适应响应式 freemarker 静态引擎 html5 SSM
官网 http://www.fhadmin.org/ 系统介绍: 1.网站后台采用主流的 SSM 框架 jsp JSTL,网站后台采用freemaker静态化模版引擎生成html 2.因为是生成的ht ...
- center os 7 安装 elasticSeartch
Centos7下安装配置elasticsearch 6.3.1 1)下载 Elasticsearch 6.3.1 地址:https://artifacts.elastic.co/downloads ...
- iOS:通信录(完成)(18-01-18更)
1.读取通信录 1).9.0以前:AddressBook 2).9.0以后:Contacts 2.调用通信录UI(不弄) 1).9.0以前:AddressBookUI 2).9.0以后:Contact ...
- C++笔记016:const 基础
原创笔记,转载请注明出处! 点击[关注],关注也是一种美德~ 笔记十六关于const关键字,在C语言和C++中const的表现是不同的. 先看一下const基础知识. 对const的初级理解:cons ...
- TinyMCE插件:RESPONSIVE filemanager 9 安装与配置
RESPONSIVE filemanager 功能: 文件上传 文件下载 重命名文件 删除文件 新建文件夹 为每个用户创建子目录 上传文件效果图: 浏览文件效果图: 文件说明: filemanager ...
- transition(过渡)
transition:过渡 渡过渡原理:原始状态a状态-向-最终结束状态b状态 格式:transition: all 1s linear; 过渡的四个参数: 1.参与过渡的属性(属性(width)/a ...
- 数据采集与分析的那些事——从数据埋点到AB测试
作者:网易有数郑栋. 一.为什么企业需要一套完善的用户行为埋点和分析平台 产品初创期间,需要分析天使用户的行为来改进产品,甚至从用户行为中得到新的思路或发现来调整产品方向:产品成长过程,通过对用户行为 ...
- 面试:HashSet怎么判断重复
HashSet是基于HashMap实现的,元素的值存储在key上,value的值所有元素都一样,都是这个 private static final Object PRESENT = new Objec ...
- pip命令安装
sudo su #切换root用户sudo apt-get install python-pip #安装pip sudo apt-get remove python-pip #卸载pippip -- ...
- Mysql Explain的简单使用
Mysql Explain 主要重要的字段有上面红色方框圈出来的那几个. type: 连接类型,一个好的SQL语句至少要达到range级别,杜绝出现all级别. key: 使用到的索引名,如果没有选择 ...