MyBatis入门(二)MyBatis环境配置

前言

      本章学习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>

再次运行代码,发现没有错误,成功输出!

这样,一个基本的配置流程就讲到这里了,是不是还可以呢! 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值