MyBatis篇1-MyBatis介绍

269 阅读4分钟

MyBatis的特点

MyBatis是一个优秀的数据持久层框架,它对JDBC的操作数据库的过程进行封装。

MyBatis使开发者只需要关注 SQL 本身,而不需要花费精力去处理例如注册驱动、创建Connection、创建Statement、手动设置参数、结果集检索等JDBC繁杂的过程代码。

MyBatis通过xml或注解的方式将要执行的各种Statement(Statement、PreparedStatement、CallableStatement)配置起来,并通过Java对象和Statement中的SQL进行映射生成最终执行的SQL语句,最后由MyBatis框架执行SQL并将结果映射成Java对象并返回。

MyBatis的基础环境配置

1、下载mybatis的jar包。地址: www.mybatis.cn/

2、创建web工程,使用软件:eclipse

3、导入jar包:mybatis-3.5.2.jar、 log4j-1.2.17.jar、 mysql-connector-java-5.1.32.jar

4、编写mybatis主配置文件myBatis-config.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>
	<environments default="development">
		<environment id="development">
			<transactionManager type="JDBC" />
			<dataSource type="POOLED">
				<property name="driver" value="com.mysql.jdbc.Driver" />
				<property name="url" value="jdbc:mysql://localhost:3306/demo?useUnicode=true&amp;characterEncoding=UTF-8" />
				<property name="username" value="root" />
				<property name="password" value="root" />
			</dataSource>
		</environment>
	</environments>
</configuration>

5、加入log4j配置文件(不是必需,但是建议加入)

主配置文件:myBatis-config.xml详解

<?xml version="1.0" encoding="UTF-8" ?> 
<!-- 上面这段是版本化的标签,xml文件生成的时候自带 -->

<!-- 对标签支持的描述,这里是mybatis3的标准 -->
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" 
"http://mybatis.org/dtd/mybatis-3-config.dtd">

<!-- 配置 -->
<configuration>
    <!-- 二级缓存 -->
	<settings>
		<!-- 
    		主配置文件中的二级缓存的开关是总开关
    		默认的情况下是开启的,也就是true
    		如果想在主配置开启开启二级缓存的总开关,不用配置<setting name="cacheEnabled" value="true"/>	
    		如果要想在主配置文件禁用二级缓存禁用可以把value设为false,
    		如果这里设为false,Mapper.xml或SQL语句级的缓存配置不再起作用 
		-->
		<setting name="cacheEnabled" value="true"/>		
	</settings>
	
	<!-- 配置别名集,注意,配置别名要放在主配置文件开头,别名可以配置多个 -->
	<typeAliases>
		<!-- 
    		type属性是原有的实体类的全类名
    		alias属性是原实体类的别名
    		定义了别名之后,在xml映射器需要实体这个实体类的时候直接使用别名就可以
		 -->
		<typeAlias type="com.test.day38.Student" alias="Student"/>
		<typeAlias type="com.test.day38.User" alias="User"/>
		<typeAlias type="com.test.day40.Emp" alias="Emp"/>
		<typeAlias type="com.test.day40.Dept" alias="Dept"/>
	</typeAliases>

	<!-- environments,配置数据源环境
		 environments表示可以包含多个environment
		 
		   我们在项目的不同阶段,是有不同的数据源配置,不可能在所有阶段共用一个数据库
		   比如, 开发的数据库和真正的生产数据库不是一个
		   如果要是只有一个数据源,就得在不同的阶段进行修改,不如直接设置多个数据源
		   
		 default属性,默认的意思,default的值就当前环境默认的数据源的id
		 default="development" 表示 当前使用是id为development的数据源环境
	 -->
    <!-- 数据源环境配置 -->
	<environments default="development">
 
        <!-- 具体数据源环境配置,id唯一 -->
		<environment id="development">
  
			<!-- transactionManager事务管理,事务交给JDBC管理 -->
			<transactionManager type="JDBC" />
			
            <!-- dataSource,数据源
				 type,类型,目前POOLED,就是数据库连接池 -->
			<dataSource type="POOLED">
				<!-- 数据库的驱动 -->
				<property name="driver" value="com.mysql.jdbc.Driver" />
    			<!-- 数据库的连接
					  在连接后面加入?useUnicode=true&amp;characterEncoding=UTF-8 可以防止数据库乱码问题 -->    
				<property name="url" value="jdbc:mysql://localhost:3306/demo?useUnicode=true&amp;characterEncoding=UTF-8" />
				<property name="username" value="root" />
				<property name="password" value="root" />
			</dataSource>
		</environment>
	</environments>
	
	<!-- 主配置文件引入映射器 -->
	<mappers>
		<!-- 
    		resource属性,代表当前的 mapper配置是引入的xml映射器
    		属性的值,就是把映射器所在的包名中的.替换成/,后面拼接映射器的文件名.后缀名
		-->
		<!-- <mapper resource="com/test/day38/StudentMapper.xml" />
		<mapper resource="com/test/day38/StudentMapperIn.xml" /> -->
		<!-- 
			class属性,就引入的接口映射器,使用的是注解+接口映射器
			值是接口包名.接口名
		 -->
		<!-- <mapper class="com.test.day38.StudentIn2" /> -->
		
		<!-- 
			在使用注解+接口映射器的时候,可能有很多的接口
			如果每个接口都要使用class="xxx"的方式引入就会写好多这样的配置
			为了避免这种情况
			可以直接配置包名,这样可以引入这个包下所有的带注解的接口
		 -->
		<!-- <package name="com.test.day38" /> -->
		
		<mapper resource="com/test/day38/StudentCURDMapper.xml" />
		<mapper resource="com/test/day39/DynamicSqlMapper.xml" />
		<mapper resource="com/test/day40/EmpMapper.xml" />
		<mapper resource="com/test/day40/DeptMapper.xml" />
		<mapper resource="com/test/day40/ParamMapper.xml" />
	</mappers>
	
</configuration>

注意:主配置文件中标签是有顺序的 properties,settings,typeAliases,typeHandlers,objectFactory,objectWrapperFactory, reflectorFactory, plugins, environments, databaseIdProvider, mappers