代碼段
//根據xml創建SqlSessionFactory對象
String resource = "mybatisConfig.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//獲取SqlSession實例,通過代理實現能直接執行已經映射的sql語句
try (SqlSession session = sqlSessionFactory.openSession()) {
EmployeeMapper mapper = session.getMapper(EmployeeMapper.class);
List<Employee> employee = mapper.selectAll();
System.out.println(employee);
}
過程
加載mybatisConfig.xml全局配置文件
- 配置log4j日誌記錄(<settings>標籤)
- 配置數據庫mysql(<environments>標籤)
- 加載映射文件mapper(<mappers>標籤)
- 加載dao層具體sql語句
- 返回sql結果,轉換成對應實體類
目錄結構
pom.xml
<dependencies>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.6</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
</dependencies>
mybatisConfig.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">
<!--mybatis的主配置文件-->
<configuration>
<!-- 一定要配置log4j,否則會用默認的日誌管理-->
<settings>
<setting name="logImpl" value="LOG4J" />
</settings>
<environments default="mysql">
<environment id="mysql">
<!-- 配置事務類型-->
<transactionManager type="JDBC"></transactionManager>
<!-- 配置數據源(連接池)-->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<!-- 數據庫地址-->
<property name="url" value="jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=utf8"/>
<!-- 數據庫登錄賬戶-->
<property name="username" value="root"/>
<!-- 數據庫登錄密碼-->
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<!-- 指定映射配置文件的位置-->
<mappers>
<!-- 映射配置文件可以是每個獨立的.xml配置文件,一定要有相對應的dao層文件(如Interface型EmployeeMapper)-->
<mapper resource="com/vivo/dao/EmployeeMapper.xml"/>
<!-- 也可以是沒有xml的class映射方法,通過註解的方式寫sql語句-->
<mapper class="com.vivo.dao.EmployeeMapperAnnotation"/>
</mappers>
</configuration>
log4j.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
<param name="Encoding" value="UTF-8" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%-5p %d{MM-dd HH:mm:ss,SSS} %m (%F:%L) \n" />
</layout>
</appender>
<logger name="java.sql">
<level value="debug" />
</logger>
<logger name="org.apache.ibatis">
<level value="info" />
</logger>
<root>
<level value="debug" />
<appender-ref ref="STDOUT" />
</root>
</log4j:configuration>