代码段
//根据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>