MyBatis环境配置与解析

  和我们学习的Java其他额外内容一样,要想使用MyBatis,首先需要导入它的jar包。因为目前大部分公司都在使用maven来实现jar包的导入和管理,因此学习时也同样推荐使用maven。以此实现学习和就业的无缝过渡。

Jar包/maven依赖

– MyBatis的maven仓库链接
https://mvnrepository.com/artifact/org.mybatis/mybatis/3.5.7
(版本号任意下载,可以使用最新版的玩玩,当然最推荐的还是使用人最多的稳妥啦。)

– GitHub链接
https://github.com/mybatis/mybatis-3/releases/tag/mybatis-3.5.7
(该方式下载jar包,需手动导入)

MyBatis核心配置文件

  MyBatis的特点就是使用XML配置文件来使用对接口的绑定和功能的实现,因此就需要在mapper之上写一个配置文件,以实现MyBatis的基础设定。
XML配置文件如下(MyBatis官网同样有示例文档可供参考)

<?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核心配置文件-->
<configuration>
	    <environments default="development">
	        <environment id="development">
	            <transactionManager type="JDBC"/>
	            <dataSource type="POOLED">
	                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
	                <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=false&amp;useUnicode=true&amp;characterEncoding=UTF-8&amp;serverTimezone=UTC"/>
	                <!--此处为自己的数据库用户名与密码-->
	                <property name="username" value="****"/>
	                <property name="password" value="****"/>
	            </dataSource>
	        </environment>
	    </environments>
	    <mappers>
	    	<!--
	    	此处为自己的Mapper配置文件路径
			每个Mapper配置文件写完后,都需要在此处声明
			-->
	        <mapper resource="org/mybatis/example/BlogMapper.xml"/>
	    </mappers>
</configuration>

编写MyBatis工具类

  要想使用MyBatis中的代码,便需要获取其SqlSession对象。通过该对象来实现对方法的调用,SqlSession 提供了在数据库执行 SQL 命令所需的所有方法。

	import org.apache.ibatis.io.Resources;
	import org.apache.ibatis.session.*;
	import java.io.InputStream;
		
	//sqlSessionFactory -> sqlSession
	public class MybatisUtils {
	    private static SqlSessionFactory sqlSessionFactory;
	    static {
	        try {
	            //使用MyBatis第一步:获取sqlSessionFactory对象
	            String resource = "mybatis-config.xml";
	            InputStream inputStream = Resources.getResourceAsStream(resource);
		        sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
		        } catch (Exception e) {
		            e.printStackTrace();
		    }
	   	}
		//既然有了 SqlSessionFactory,顾名思义,我们可以从中获得 SqlSession 的实例。
		public static SqlSession getSqlSession() {
		    return sqlSessionFactory.openSession();
		}
}

后续测试

  当完成以上两步后,其实一个完整的MyBatis项目框架已经搭建完毕了,但如何知道它是健康的呢?那就需要编写供映射的实体类和测试代码来实现。
  实体类的搭建相信学习到这里的大家已经很熟悉了,便不再赘述,仅附上供测试的代码,并进行简单的说明。
  首先,需要在核心配置文件中注册mapper文件

<!--namespace=绑定一个对应的Dao/Mapper接口-->
<mapper namespace="com.wu.dao.xxxMapper">
</mapper>

  此处,使用大部分公司选用的Junit单元测试的方式来进行测试工作,当然首先要导入其jar包或maven依赖,自行百度不再赘述。

@Test
public void test() {
    //第一步:获得SqlSession对象
    SqlSession sqlSession = MybatisUtils.getSqlSession();

    //方式一:getMapper
    //使用反射机制动态创建一个实例,通过该实例调用其接口实现类(UserMapper.xml)的方法
    UserDao userDao = sqlSession.getMapper(UserDao.class);
    //利用该实例使用接口方法
    List<User> userList = userDao.getUserList();
	
	//方式二:不推荐使用
//  List<User> userList = sqlSession.selectList("com.wu.dao.UserDao.getUserList");
        for (User user : userList) {
            System.out.println(user);
        }
        //关闭SqlSession
        sqlSession.close();
    }

    for (User user : userList) {
        System.out.println(user);
    }
	
    //关闭SqlSession
    sqlSession.close();
}

  MyBatis实现Mapper接口的实例化有两种方式,不同于之间的接口实例化。推荐使用 getMapper() 的方式来创建Mapper实例。因为第二种方式直接写死了方法名,无法提高代码复用性和体现MyBatis的灵活性。

写在最后

  测试MyBatis时难免会遇到各种各样的问题,常见的有:

  1. 配置文件没有注册
  2. 绑定接口错误
  3. 方法名错误
  4. 返回类型错误
  5. Maven导出资源错误

切记读错误提示要从下往上读,善用百度和CSDN。

上一篇:mybatis缓存和二级缓存


下一篇:第八章 动态SQL