两个文件:
1)全局配置文件:mybatis-config.xml,指导MyBatis正确运行的全局设置;
2)sql映射文件:EmployeeDao.xml,相当于是对Dao接口的一个实现描述
细节:获取到的是接口的代理对象,MyBatis自动创建的
2)SqlSessionFactory和SqlSession
SqlSessionFactory创建SqlSession,new一次就行
SqlSession,相当于connection,和数据库的一次会话,每次会话new一次新的
全局配置文件
<?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.microsoft.sqlserver.jdbc.SQLServerDriver"/>
<!-- jdbc:sqlserver://localhost:1433;DatabaseName=sm -->
<property name="url" value="jdbc:sqlserver://localhost:1433;DatabaseName=sm"/>
<property name="username" value="lyj"/>
<property name="password" value="jl123654"/>
</dataSource>
</environment>
</environments>
<!-- 引入我们自己编写的每一个接口的实现文件 -->
<mappers>
<!-- resource:从类路径下找资源 -->
<mapper resource="EmployeeDao.xml"/>
</mappers>
</configuration>
configuration 配置
properties 属性
settings 设置
typeAliases 类型命名
typeHandlers 类型处理器
objectFactory 对象工厂
plugins 插件
environments 环境
environment 环境变量
transactionManager 事务管理器
dataSource 数据源
databaseIdProvider 数据库厂商标识
mappers 映射器
书写顺序
(properties?, settings?, typeAliases?, typeHandlers?, objectFactory?,
objectWrapperFactory?, plugins?, environments?, databaseIdProvider?, mappers?)
settings 设置
<!--settings:重要的调整设置,它们会改变 MyBatis 的运行时行为 -->
<settings>
<!-- loginAccount 和表内的login_Account对应 -->
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
typeAliases 类型命名
<!-- 3,类型别名,为我们常用的类型起别名(javaBean) -->
<typeAliases>
<!-- 为一个javaBean起别名,别名设置默认是类名,alias=""指定别名 -->
<typeAlias type="com.lyj.bean.Employee" />
</typeAliases>
也可以直接给javaBean标注解
typeHandlers
原生JDBC执行sql或者封装结果集
Connection cn = dataSource.getConnection();
String sq = “delete from t_employee where id=?”;
prepareStatement ps = cn.prepareStatement(sql);
ps.setInt(0,1);
int i = ps.executeUpdate();
//ps.close;connection.close;
plugins 插件
插件是MyBatis里的一个强大的功能,四大对象
environments 环境
<!-- 6, environments配置环境们,
environment是具体的环境,都需要一个事务管理器和数据源
后来,数据源和事务管理都是Spring管理
-->
<!-- default:默认使用环境们的哪个 -->
<environments default="development">
<!-- id是环境的唯一标识 -->
<environment id="testEnv">
<transactionManager type=""></transactionManager>
<dataSource type="">
<property name="driver" value="${driver}"/>
<!-- jdbc:sqlserver://localhost:1433;DatabaseName=sm -->
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED"><!-- 配置连接池 -->
<property name="driver" value="${driver}"/>
<!-- jdbc:sqlserver://localhost:1433;DatabaseName=sm -->
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
databaseIdProvider环境
数据库移植
<databaseIdProvider type="DB_VENDOR">
<!-- name:数据库厂商标识,value:给标识起别名
MySQL,Oracle,SQL Server
-->
<property name="SQL Server" value="sqlservver"/>
<property name="Oracle" value="orcl"/>
<property name="MySQL" value="mysql"/>
</databaseIdProvider>
EmployeeDao.xml
<!-- 默认这个查询不区分环境, -->
<select id="getEmpByID" resultType="com.lyj.bean.Employee">
select * from t_employee where id=#{id}
</select>
<!-- databaseId="sqlserver"指定在哪个环境执行 -->
<select id="getEmpByID" resultType="com.lyj.bean.Employee" databaseId="sqlserver">
select * from t_employee where id=#{id}
</select>