Mybatis笔记五:Mybatis的全局配置文件Configuration.xml讲解
2017-03-15 23:15
411 查看
从 XML 中构建 SqlSessionFactory
每个基于Mybatis应用都是以一个SqlSessionFactory实例为中心。SqlSessionFactory实例可以由SqlSessionFactoryBuild获得,而SqlSessionFactoryBuild可以以一个xml配置文件(Configuration.xml)构建出SqlSessionFactory实例。Mybatis全局配置文件(Configuration.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> <!-- 配置数据源信息 --> <properties resource="jdbc.properties"/> <!-- 类型别名只是Java类型的别名,它可以有效减少Xml配置文件中映射查询语句里 返回类型(resultType)为自定义实体类的完全限定名冗余 --> <typeAliases> <typeAlias alias="narCode" type="com.test.model.NarCode" /> </typeAliases> <!-- 获取数据库连接实例的数据源(DataSource)和决定事务作用域和控制方式的事务管理器(TransactionManager) --> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="${datasource.driverClassName}" /> <property name="url" value="${datasource.url}" /> <property name="username" value="${datasource.username}" /> <property name="password" value="${datasource.password}" /> </dataSource> </environment> </environments> <!-- 程序中所用到sql映射文件都在这里列出,这些映射sql都被Mybatis管理 --> <mappers> <mapper resource="com/test/xml/NarCodeMapper.xml" /> </mappers> </configuration>
xml映射文件[已映射的 SQL 语句](NarCodeMapper.xml):
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!-- 在sql映射文件中,Mybatis中namespace终于派上用场,它使得映射文件和接口之间的绑定变的非常自然。 在iBatis中namespace不是必须的 --> <mapper namespace="com.test.dao.NarCodeMapper"> <resultMap id="BaseResultMap" type="narCode"> <id column="id" property="id" jdbcType="VARCHAR" /> <result column="cnt" property="cnt" jdbcType="VARCHAR" /> <result column="parentid" property="parentid" jdbcType="VARCHAR" /> <result column="dlevel" property="dlevel" jdbcType="VARCHAR" /> </resultMap> <!-- 根据id来查询 --> <select id="getNarCode" parameterType="java.lang.String" resultType="narCode"> select a.id,a.cnt,a.parentid,a.dlevel,a.rowid from nar_code a where a.id = #{id,jdbcType=VARCHAR} </select> </mapper>
映射器类:
package com.test.dao; import com.test.model.NarCode; public interface NarCodeMapper { public NarCode getNarCode(String id); }
测试示例一:
import java.io.IOException; import java.io.InputStream; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import org.junit.Before; import org.junit.Test; import com.test.model.NarCode; public class Demo { SqlSessionFactory sqlSessionFactory; @Before public void testBefore() { String resource = "Mybatis-Configuration.xml"; InputStream inputStream; try { //MyBatis 包含一个名叫 Resources 的工具类,它包含一些实用方法,可使从 classpath 或其他位置加载资源文件 inputStream = Resources.getResourceAsStream(resource); //SqlSessionFactoryBuild来创建一个SqlSessionFactory实例 sqlSessionFactory = new SqlSessionFactoryBuilder() .build(inputStream); } catch (IOException e) { e.printStackTrace(); } } @Test public void tes1() { /** 从SqlSessionFactory实例获得 SqlSession 实例。SqlSession 完全包含了面向数据库执行 SQL 命令所需的所有方法。 你可以通过 SqlSession 实例来直接执行已映射的 SQL 语句 **/ SqlSession sqlSession = sqlSessionFactory.openSession(); try { NarCode narCode = sqlSession.selectOne( "com.test.dao.NarCodeMapper.getNarCode", "110000"); System.out.println(narCode); } finally { sqlSession.close(); } } }
这种方式能够正常工作,并且对于使用旧版本 MyBatis 的用户来说也比较熟悉,不过现在有了一种更直白的方式。使用对于给定语句能够合理描述参数和返回值的接口(比如说NarCodeMapper.class),你现在不但可以执行更清晰和类型安全的代码,而且还不用担心易错的字符串字面值以及强制类型转换。
测试示例二:
import java.io.IOException; import java.io.InputStream; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import org.junit.Before; import org.junit.Test; import com.test.dao.NarCodeMapper; import com.test.model.NarCode; public class Demo { SqlSessionFactory sqlSessionFactory; @Before public void testBefore() { String resource = "Mybatis-Configuration.xml"; InputStream inputStream; try { inputStream = Resources.getResourceAsStream(resource); sqlSessionFactory = new SqlSessionFactoryBuilder() .build(inputStream); } catch (IOException e) { e.printStackTrace(); } } @Test public void tes1() { SqlSession sqlSession = sqlSessionFactory.openSession(); try { NarCodeMapper narCodeMapper=sqlSession.getMapper(NarCodeMapper.class); NarCode narCode1=narCodeMapper.getNarCode("110000"); System.out.println(narCode1); } finally { sqlSession.close(); } } }
相关文章推荐
- Mybatis学习笔记-核心配置文件概述
- MyBatis学习笔记(三)——优化MyBatis配置文件中的配置
- Struts2.0学习笔记---设置国际化全局配置文件和包范围配置文件和Action范围配置
- Mybatis学习(3)关于mybatis全局配置文件SqlMapConfig.xml
- mybatis中的全局配置文件
- mybatis入门基础(三)----SqlMapConfig.xml全局配置文件解析
- mybatis学习笔记(十二) 映射配置文件详解
- mybatis-Config.xml全局配置文件解析
- Mybatis的Mapper代理方法和全局配置文件
- mybatis学习之全局配置文件(五)
- mybatis入门基础(三)----SqlMapConfig.xml全局配置文件解析------------转载
- 电商平台学习笔记(四)——Spring配置Mybatis简化DAO层省略Mybatis核心配置文件
- mybatis入门基础(三)----SqlMapConfig.xml全局配置文件解析
- mybatis全局配置文件SqlMapConfig.xml
- mybatis学习笔记--配置文件+注解完整案例
- Mybatis学习笔记(二)配置文件
- Mybatis学习笔记-CURD(基于配置文件的方式)
- Mybatis中全局配置文件的内容
- SqlMapConfig.xml配置文件---Mybatis学习笔记(七)
- Mybatis 全局配置文件中typeAliases(别名)