一、SqlMapConfig.xml 配置文件详解
1. 使用 properties 标签管理数据库信息
为了便于维护,通常将数据库连接信息抽取到独立的.properties文件中。
方式一:直接在 properties 标签内定义
<?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> <property name="jdbc.driver" value="com.mysql.jdbc.Driver"/> <property name="jdbc.url" value="jdbc:mysql:///mybatis_db"/> <property name="jdbc.username" value="root"/> <property name="jdbc.password" value="root"/> </properties> <!-- 配置环境们 --> <environments default="mysql"> <!-- 配置具体的环境 --> <environment id="mysql"> <!-- 配置事务管理类型 --> <transactionManager type="JDBC"/> <!-- 配置是否需要使用连接池,POOLED使用,UNPOOLED不使用 --> <dataSource type="POOLED"> <property name="driver" value="${jdbc.driver}"/> <property name="url" value="${jdbc.url}"/> <property name="username" value="${jdbc.username}"/> <property name="password" value="${jdbc.password}"/> </dataSource> </environment> </environments> <!-- 加载映射的配置文件 --> <mappers> <mapper resource="mappers/UserMapper.xml"/> </mappers> </configuration>方式二:引入外部 jdbc.properties 文件
首先,在resources目录下创建jdbc.properties文件
jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql:///mybatis_db jdbc.username=root jdbc.password=root然后,在SqlMapConfig.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"></properties>读取外部的配置文件 resource="文件的相对路径写法"。例如:jdbc.properties或者com/qcby/xxx/jdbc.properties --> <properties resource="jdbc.properties"></properties> <!-- 配置环境们 --> <environments default="mysql"> <!-- 配置具体的环境 --> <environment id="mysql"> <!-- 配置事务管理类型 --> <transactionManager type="JDBC"/> <!-- 配置是否需要使用连接池,POOLED使用,UNPOOLED不使用 --> <dataSource type="POOLED"> <property name="driver" value="${jdbc.driver}"/> <property name="url" value="${jdbc.url}"/> <property name="username" value="${jdbc.username}"/> <property name="password" value="${jdbc.password}"/> </dataSource> </environment> </environments> <!-- 加载映射的配置文件 --> <mappers> <mapper resource="mappers/UserMapper.xml"/> </mappers> </configuration>2. 类型别名(typeAliases)定义
类型别名可以简化 Mapper 映射文件中parameterType和resultType的编写。
MyBatis 内置别名:许多常见 Java 类型已经内置了别名如int/integer→java.lang.Integer,string→java.lang.String等。
自定义别名:有两种方式。
方式一:为单个类指定别名
<typeAliases> <typeAlias type="com.qcby.domain.User" alias="user"/> </typeAliases>配置后,resultType="user"就等价于resultType="com.qcbyjy.domain.User"。
别名不区分大小写。
方式二:扫描指定包下的所有类
<typeAliases> <!-- 为 com.qcby.domain 包下的所有类注册别名,别名默认是类名(首字母小写或大写均可) --> <package name="com.qcby.domain"/> </typeAliases>二、MyBatis 的连接池
1. 连接池回顾
连接池是什么:存储数据库连接的容器。
解决的问题:如果没有连接池,每次执行 SQL 语句都会创建新的 Connection 连接,这非常耗时,影响程序性能。连接池通过复用连接来提升效率。
2. MyBatis 连接池的分类
MyBatis 内置了连接池技术,通过 SqlMapConfig.xml 中 <dataSource> 标签的 type 属性进行配置,共有三种取值:
POOLED:使用连接池(推荐)。
UNPOOLED:不使用连接池,每次请求都会创建新的连接。
JNDI:使用 JNDI 实现连接池,通常用于 Java EE 容器中。
<!-- 配置是否需要使用连接池,POOLED使用,UNPOOLED不使用 --> <dataSource type="POOLED"> <property name="driver" value="${jdbc.driver}"/> <property name="url" value="${jdbc.url}"/> <property name="username" value="${jdbc.username}"/> <property name="password" value="${jdbc.password}"/> </dataSource>