1、测试类代码:
public class MybatisTest {
//根据id查询用户信息,得到一条记录
@Test
public void findUserById() throws IOException {
//mybatis配置文件
String resource = "SqlMapConfig.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
//创建会话工厂SqlSessionFactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//通过工厂得到SqlSession
SqlSession sqlSession = sqlSessionFactory.openSession();
//通过SqlSession操作数据库(通过id添加记录)
//第一个参数:映射文件中statement的id,等于namespace+"."+statement的id
//第二个参数:指定和映射文件中所匹配的parameterType类型的参数
User user = sqlSession.selectOne("test.findUserById",1);
System.out.println(user);
//释放资源
sqlSession.close();
}
2、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配置文件 -->
<properties resource="db.properties">
<!-- 注意:不要在properties下的property中添加属性-->
</properties>
<!-- 全局配置参数 -->
<!-- <settings>
</settings> -->
<!--批量定义别名 (常用)
批量定义时别名默认为类名(大小写均可)
-->
<typeAliases>
<package name="com.sunhui.mybatis.pojo"/>
</typeAliases>
<!-- 声明数据连接环境 -->
<environments default="development">
<environment id="development">
<!-- 配置jdbc事务管理-事务控制由mybatis来管理 -->
<transactionManager type="JDBC" />
<!-- 配置数据源 -->
<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>
<!-- 引入mapper映射文件 -->
<mappers>
<!--批量加载maper映射文件 常用!!!方便
指定mapper接口的包名,mybatis自动扫描这个包下面的所有mapper接口
同时也必须遵循上面的规范
-->
<package name="com.sunhui.mybatis.mapper"/>
</mappers>
</configuration>
3、执行流程:
1)SqlMapConfig.xml(mybatis的全局配置文件):配置了数据源、事务等运行环境,配置了映射文件(sql语句)
2)SqlSessionFactory(会话工厂):创建SqlSession
3)SqlSession(会话--面向用户的接口):操作数据库(根据sql进行增、删、改、查)
4)Executor(执行器--接口):SqlSession内部通过执行器操作数据库
5)Mapped statement(底层封装对象):对操作数据库存储封装,包括sql语句、输入参数、输出参数。