mybatis 加载配置文件的方法(两种方式)
时间:2020-10-13 13:22:28|栏目:JAVA代码|点击: 次
一. 使用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>
前两种都是在spring的配置文件中配置的, 在 mybatis 的配置文件中配置 <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(); } }
总结
阅读排行
- 1Java Swing组件BoxLayout布局用法示例
- 2java中-jar 与nohup的对比
- 3Java邮件发送程序(可以同时发给多个地址、可以带附件)
- 4Caused by: java.lang.ClassNotFoundException: org.objectweb.asm.Type异常
- 5Java中自定义异常详解及实例代码
- 6深入理解Java中的克隆
- 7java读取excel文件的两种方法
- 8解析SpringSecurity+JWT认证流程实现
- 9spring boot里增加表单验证hibernate-validator并在freemarker模板里显示错误信息(推荐)
- 10深入解析java虚拟机