前言
本章学习MyBatis的环境配置
方法
说明:Mybatis框架的相关源码讲解将继续使用之前改好的SMS
1.引入相关jar包
我们遵循一个原则,用多少jar包引多少jar包,因为我们还没有用maven来进行统一的管理!
首先我们导入MyBatis的核心jar包:
2.编写MyBatis的主要配置文件
按照官方文档的说法,我们将这个xml配置文件起个名字叫做:mybatis-config.xml
我们将其放入src路径下:
那具体这个XML该写什么内容呢,我们来看官方文档:
我们暂时没有必要将这些统统拷贝到mybatis-config.xml中,我们暂时只拷贝xml头以及相关的dtd即可:
此刻我们发现将会有提示出现,根据文档写入如下配置:
<?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>
<!-- 数据库连接环境标签,可以配置多个数据库连接,default表示默认的连接,对应每个环境的id值 -->
<environments default="development">
<!-- 数据库连接环境配置标签,id唯一标识每个环境 -->
<environment id="development">
<!-- 声明使用的事务管理方式,这里采用原生的JDBC事务管理 -->
<transactionManager type="JDBC"></transactionManager>
<!-- 配置数据源,采用数据库连接池技术 -->
<dataSource type="POOLED">
<!-- 定义数据库连接必备的属性 -->
<property name="driver" value="oracle.jdbc.driver.OracleDriver"/>
<property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl"/>
<property name="username" value="scott"/>
<property name="password" value="tiger"/>
</dataSource>
</environment>
</environments>
</configuration>
这样的话,我们最为基础的配置就结束了!
3.编写数据访问层实现的配置文件
注意:该处我们简单的理解为该配置文件是dao的实现类
按照官方给出的说法,这个配置文件一般命名为:实体类名+Mapper.xml,我们SMS就是UserMapper.xml和StudentMapper.xml
由于我们使用mybatis框架,原来的dao包改名为mapper包,并将指定的xml放入其中:
那具体这个xml该如何写呢,我们看官方文档:
我们依然只是写出xml头和dtd,这样就会产生相关的提示信息:
根据官方的说法,编写如下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代表实现类的全路径(包名+类名) -->
<mapper namespace="cn.edu.ccut.mapper.StudentMapper">
<!-- 该处每一个标签代表一个方法(select、insert、delete、update等),
id为方法名,
parameterType为参数类型,
resultType为返回值类型
-->
<select id="doLogin" parameterType="String" resultType="cn.edu.ccut.bo.User">
select * from users
</select>
</mapper>
我们先来弄个比较简单的查询语句进行练习!这样dao实现类就写完一部分了。
4.测试查询功能
这里我们采用JUnit技术进行测试:
编写测试类StudentTest.java,写入测试方法testLoginUser
package cn.edu.ccut.test;
import org.junit.Test;
public class StudentTest {
@Test
public void testLoginUser(){
}
}
1)获取sqlSessionFactory对象
根据官方文档提示进行编写:
编写如下代码获取sqlSessionFactory对象:
package cn.edu.ccut.test;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;
import java.io.IOException;
import java.io.InputStream;
public class StudentTest {
@Test
public void testLoginUser(){
try {
//获取sqlSessionFactory对象
InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
System.out.println(sqlSessionFactory);
} catch (IOException e) {
e.printStackTrace();
}
}
}
可以发现,我们成功的取到了sqlSessionFactoryd对象!
2)获取SqlSession对象
SqlSession session = sqlSessionFactory.openSession();
3)使用session对象执行之前写的doLogin方法
List<User> list = session.selectList("doLogin");
完整的Java代码如下:
package cn.edu.ccut.test;
import cn.edu.ccut.bo.User;
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 org.junit.Test;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
public class StudentTest {
@Test
public void testLoginUser(){
SqlSession session = null;
try {
//获取sqlSessionFactory对象
InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//获取sqlSession对象
session = sqlSessionFactory.openSession();
//使用sqlSession对象进行查询操作
List<User> list = session.selectList("doLogin");
for (User user: list) {
System.out.println(user);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
//关闭连接
session.close();
}
}
}
5.执行测试代码
右键运行该方法:
1)mapper关联失败bug
解决:
这里我们再mybatis-config.xml中配置下mapper文件的关联:
完整的配置文件如下:
<?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>
<!-- 数据库连接环境标签,可以配置多个数据库连接,default表示默认的连接,对应每个环境的id值 -->
<environments default="development">
<!-- 数据库连接环境配置标签,id唯一标识每个环境 -->
<environment id="development">
<!-- 声明使用的事务管理方式,这里采用原生的JDBC事务管理 -->
<transactionManager type="JDBC"></transactionManager>
<!-- 配置数据源,采用数据库连接池技术 -->
<dataSource type="POOLED">
<!-- 定义数据库连接必备的属性 -->
<property name="driver" value="oracle.jdbc.driver.OracleDriver"/>
<property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl"/>
<property name="username" value="scott"/>
<property name="password" value="tiger"/>
</dataSource>
</environment>
</environments>
<!-- 配置mapper文件关联 -->
<mappers>
<mapper resource="cn/edu/ccut/mapper/StudentMapper.xml"/>
</mappers>
</configuration>
再次运行代码,发现没有错误,成功输出!
这样,一个基本的配置流程就讲到这里了,是不是还可以呢!