在Maven(Java SE)项目中使用MyBatis

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Mr__Viking/article/details/91429150

序言

现在的开发基本上都已经高度集成化了,很多技术我们只需要一些简单的配置就能立马开箱即用。但是当我们需要快速编写一些小工具时,去配置一个SSM或者其他一些框架组合的整合项目,往往是比较麻烦的,同时我们也不一定就完全需要将这些整合中所有的东西。比如我们需要写一个类似爬虫之类的小工具去抓一些网页,这时我们就可以选择只用纯java SE工程再配置一个Mybatis用于桥接数据库就行了,使用起来也是非常的轻巧方便。下面我们就来分析一下如何在一个纯java SE的项目中把MyBatis的一套东西用起来。

目录

1.导入MyBatis相关的jar包

2.配置MyBatis.xml

3.读取配置文件创建SqlSessionFactory

4.封装常用方法


1.导入MyBatis相关的jar包

直接使用Maven的依赖,代码如下:

    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.4.5</version>
    </dependency>

2.配置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>
    <!-- 导入数据库相关配置文件(*注意:最多只能有一个) -->
    <properties resource="config/mysql.properties" />
    <!-- 全局变量配置 -->
    <settings>
        <!-- 开启驼峰命名法转换 -->
        <setting name="mapUnderscoreToCamelCase" value="true"/>
    </settings>

    <!-- 不使用权限定名称时配置简称(两种方式,1.直接配置包名称;2.为每一个DO配置简称) -->
    <typeAliases>
        <package name="com.**.model"/>
        <!--<typeAlias alias="Book" type="com.spider.model.Book" />-->
    </typeAliases>
    <!-- 配置数据源环境(可多个,但必须配置default数据源) -->
    <environments default="development">
        <!-- 第一个数据源 -->
        <environment id="development">
            <transactionManager type="JDBC" />
            <dataSource type="POOLED">
                <property name="driver" value="${mysql.driver}" />
                <property name="url" value="${mysql.url}"/>
                <property name="username" value="${mysql.user}"/>
                <property name="password" value="${mysql.password}"/>
            </dataSource>
        </environment>
        <!-- 第二个数据源 -->
        <environment id="dataSource2">
            <transactionManager type="JDBC" />
            <dataSource type="POOLED">
                <property name="driver" value="${DS-2.driver}" />
                <property name="url" value="${DS-2.url}"/>
                <property name="username" value="${DS-2.user}"/>
                <property name="password" value="${DS-2.password}"/>
            </dataSource>
        </environment>
    </environments>

    <!-- 将mapper.xml映射到mybatis中(这里的xml文件如果是放在resource目录下面的话就必须老老实实配置每一个xml文件,如果是放在src下面某一个包内,可以用package指定包路径) -->
    <mappers>
        <mapper resource="dao/BookMapper.xml"/>    
        <!--<package name="com.spider.dao"/>-->
    </mappers>
</configuration>

3.读取配置文件创建SqlSessionFactory

将代码中的配置文件路径改成自己的路径即可。

    // mybatis相关参数
    private final static String CONFIG_PATH = "config/mybatis.xml";
    private static InputStream input;
    private SqlSession sqlSession;

    private void init(String environment){
        try {
            input = Resources.getResourceAsStream(CONFIG_PATH);
        } catch (IOException e) {
            e.printStackTrace();
        }
        // 通过mybatis配置文件和environment名称获取sqlSessionFactory
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(input, environment);
        // 开启自动提交,否则的话需要自己在执行完操作后手动提交
        sqlSession = sqlSessionFactory.openSession(true);
    }

4.封装常用方法

我们在使用MyBatis的时候无外乎就只是需要使用SqlSession来创建Mapper实例对象,因此我们使用一个泛型方法来创建指定类型的Mapper实例。

public <T> T getMapper(Class<T> clazz){
        return sqlSession.getMapper(clazz);
    }

最后我再把我的java代码都贴一下:

package com.spider.util;

import org.apache.commons.lang.StringUtils;
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;

/**
 * Created by Viking on 2019/6/11
 * 封装MyBatis的初始化及构造mapper的一些方法
 */
public class MyBatisUtil {
    // mybatis相关参数
    private final static String CONFIG_PATH = "config/mybatis.xml";
    private static InputStream input;
    private SqlSession sqlSession;

    private void init(String environment){
        try {
            input = Resources.getResourceAsStream(CONFIG_PATH);
        } catch (IOException e) {
            e.printStackTrace();
        }
        // 通过mybatis配置文件和datasource名称获取sqlSessionFactory
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(input, environment);
        // 设置自动提交
        sqlSession = sqlSessionFactory.openSession(true);
    }
    // 使用默认datasource环境的构造器
    public MyBatisUtil(){
        init(null);
    }
    // 使用指定datasource环境的构造器
    public MyBatisUtil(String environment){
        init(environment);
    }
    // 创建Mapper实例
    public <T> T getMapper(Class<T> clazz){
        return sqlSession.getMapper(clazz);
    }
    // 关闭连接,使用结束后必须执行
    public void close(){
        if (null != sqlSession) {
            sqlSession.close();
        }
        if (null != input) {
            try {
                input.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

猜你喜欢

转载自blog.csdn.net/Mr__Viking/article/details/91429150