1.读取配置文件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>
<!--数据库配置文件-->
<properties resource="jdbc.properties"></properties>
<typeAliases>
<package name="com.xqc.model" />
</typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<!-- 配置数据库连接信息 -->
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driverClass}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="mapper/EoStockMapper.xml" />
</mappers>
</configuration>
注意配置文件的属性顺序,不然会报错,typeAliases要写在properties猴儿面,不然会报错,例如这样写
读取mybatis-config.xml的方法
InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
2.创建SqlSessionFactory,最为关键的步骤
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
SqlSessionFactory的解析过程,解析configuration的属性,
mybatis解析mappers文件的几种方式,官网上有4种,resource、url、class、package
其中package优先级最高。接着是resource、url、class
3.打开SqlSession
SqlSession sqlSession = sqlSessionFactory.openSession();
mybatis的三种执行器,默认是SIMPLE
mybatis的一级缓存默认是开启的
4.执行SQL
EoStockMapper eoStockMapper = sqlSession.getMapper(EoStockMapper.class);
EoStockMapper接口文件
public interface EoStockMapper {
List<EoStockModel> selectList();
}
EoStockMapper接口对应的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" >
<mapper namespace="com.xqc.mapper.EoStockMapper" >
<select id="selectList" resultType="EoStockModel" useCache="false" flushCache="true">
select
*
from eo_stock
</select>
</mapper>
为什么只写接口和xml就能实现查询返回结果呢?核心精髓就是jdk的动态代理
连续查询两次,第二次没有查询数据库,(同一个SqlSession ,不同的SqlSession对象都是相互隔离的)
关闭一级缓存的方法:sql映射文件的配置
可以看到两次都查询了数据库
EoStockMapper.xml
5.关闭SqlSession
sqlSession.close();