1. 建立maven项目
项目下需要java:Sources Root; resources: Resources Root
2. 添加mybatis的依赖
<!-- mysql -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.16</version>
</dependency>
<!-- mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.1</version>
</dependency>
3. 定义配置文件
<?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="database.properties"></properties>
<!--取别名 -->
<typeAliases>
<typeAlias type="pojo.Subject" alias="Subject"></typeAlias>
</typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="mapper/SubjectMapper.xml"/>
</mappers>
</configuration>
3.1 配置文件结构图
3.1.1 根节点
configuration:根节点
3.1.2 子节点
1、properties,配置文件,配置数据库信息
<!-- 同时存在,取properties文件中的 -->
<properties resource="database.properties">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://127.0.0.1:3306/myschool?serverTimezone=UTC&useUnicode=true&characterEncoding=UTF-8"/>
<property name="username" value="root"/>
<property name="password" value="root123"/>
</properties>
2、setting:修改mybatis在运行时的行为方式
3、typeAliases
<!--取别名 -->
<typeAliases>
<typeAlias type="pojo.Subject" alias="Subject"></typeAlias>
</typeAliases>
4、typeHandlers:类型处理
5、objectFactory:对象工厂
6、plugins:插件
7、environments:环境
可以配置多组,当前用那一组,只需要将id对应的值设置在default设置,即可!
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
8、mappers:映射器
<mappers>
<mapper resource="mapper/SubjectMapper.xml"/>
</mappers>
4. 定义实体类
5. 定义mapper文件
<?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="mapper.SubjectMapper"><!--namespace指向mapper接口 -->
<select id="selectList" resultType="pojo.Subject">
select subjectno,subjectname,classhour,gradeid from subject where 1 = 1
</select>
</mapper>
可以在api中复制
6.定义测试,添加junit4测试
先要添加junit4插件, https://blog.youkuaiyun.com/hanchao5272/article/details/79197989
直接测试
@Test //实现测试
public void testSelect(){
SqlSession sqlSession = null;
try {
InputStream is = Resources.getResourceAsStream( "mybatis-config.xml" );
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build( is );
sqlSession = factory.openSession();
List<Subject> list = sqlSession.selectList( "mapper.SubjectMapper.selectList" );
for (Subject subject : list) {
System.out.println(subject.getSubjectNo() + "," + subject.getSubjectName());
}
System.out.println(list.size());
} catch (IOException e) {
e.printStackTrace();
}finally {
sqlSession.close();
}
}
定义工具类
工具类
package utils;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.IOException;
import java.io.InputStream;
/**
* mybatis工具类
*/
public class MyBatisUtil {
private static SqlSessionFactory factory;
static {
try {
InputStream is = Resources.getResourceAsStream( "mybatis-config.xml" );
// InputStream is = Resources.getResourceAsStream( "mybatis-config2.xml" );
factory = new SqlSessionFactoryBuilder().build( is );
} catch (IOException e) {
e.printStackTrace();
}
}
public static SqlSession createSqlSession(){
return factory.openSession(false);
}
public static void closeSqlSession(SqlSession sqlSession){
if(null != sqlSession){
sqlSession.close();
}
}
}
测试类
@Test
public void testSelectByUtil(){
SqlSession sqlSession = null;
try {
sqlSession = MyBatisUtil.createSqlSession();
List<Subject> list = sqlSession.selectList( "mapper.SubjectMapper.selectList" );
for (Subject subject : list) {
System.out.println(subject.getSubjectNo() + "," + subject.getSubjectName());
}
System.out.println(list.size());
} catch (Exception e) {
e.printStackTrace();
} finally {
MyBatisUtil.closeSqlSession( sqlSession );
}
}
定义mapper的java接口
接口
package mapper;
import pojo.Subject;
import java.util.List;
public interface SubjectMapper {
List<Subject> selectList(); //方法名必须是在mapper存在的id
}
测试
@Test
public void testSelectByMapper(){
SqlSession sqlSession = null;
List<Subject> list = new ArrayList<>();
try {
sqlSession = MyBatisUtil.createSqlSession();
list = sqlSession.getMapper( SubjectMapper.class).selectList();
} catch (Exception e) {
e.printStackTrace();
} finally {
MyBatisUtil.closeSqlSession( sqlSession );
}
for (Subject subject : list) {
System.out.println(subject.getSubjectNo() + "," + subject.getSubjectName());
}
System.out.println(list.size());
}
读取配置文件
mapper读取不到时
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
<build>
mybatis配置文件读取不到时
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
<build>