MyBatis數據庫連接配置示例

一、Mybatis 和 Spring Mybatis 的關係

1、什麼是 MyBatis?

​ MyBatis 是一款優秀的持久層框架,它支持自定義 SQL、存儲過程以及高級映射。MyBatis 免除了幾乎所有的 JDBC 代碼以及設置參數和獲取結果集的工作。MyBatis 可以通過簡單的 XML 或註解來配置和映射原始類型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 對象)爲數據庫中的記錄。

2、什麼是 MyBatis-Spring?

​ MyBatis-Spring 會幫助你將 MyBatis 代碼無縫地整合到 Spring 中。它將允許 MyBatis 參與到 Spring 的事務管理之中,創建映射器 mapper 和 SqlSession 並注入到 bean 中,以及將 Mybatis 的異常轉換爲 Spring 的 DataAccessException。最終,可以做到應用代碼不依賴於 MyBatis,Spring 或 MyBatis-Spring。

開始學習時,要注意這兩者的關係和區別:

3、MyBatis數據庫連接配置示例

1)、POM依賴
    <properties>
        <mysql.version>5.1.38</mysql.version>
        <mybatis.version>3.5.2</mybatis.version>
        <junit.version>4.12</junit.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>${mysql.version}</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>${mybatis.version}</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>${junit.version}</version>
        </dependency>
    </dependencies>

    <build>
        <!--資源文件管理-->
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>true</filtering>
            </resource>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>true</filtering>
            </resource>
    </build>
2)、數據連接配置
<!--文件:mybatis-config.xml-->
<configuration>
    <properties resource="./db.properties">
        <property name="jdbc-driver" value=""/>
        <property name="jdbc-url" value=""/>
        <property name="username" value=""/>
        <property name="password" value=""/>
    </properties>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc-driver}"/>
                <property name="url" value="${jdbc-url}"/>
                <property name="username" value="${username}"/>
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="com/tonghua/dao/UserInfoMapper.xml"/>
    </mappers>
</configuration>
#文件:db.properties
jdbc-driver=com.mysql.jdbc.Driver
jdbc-url=jdbc:mysql://localhost/test?useSSL=true&useUnicode=true&characterEncoding=UTF-8
username=usertest
password=123456
3)、Mapper文件:

UserInfoMapper.java

package com.tonghua.dao;

import com.tonghua.pojo.UserInfo;
import java.util.List;
import org.apache.ibatis.annotations.Mapper;

@Mapper
public interface UserInfoMapper {

    List<UserInfo> selectUserList();
}

UserInfoMapper.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="com.tonghua.dao.UserInfoMapper">
    <select id="selectUserList" resultType="com.tonghua.pojo.UserInfo">
    select * from userinfo;
  </select>
</mapper>
4)、實體類
package com.tonghua.pojo;

public class UserInfo {

    private int id;
    private String username;
    private String gender;

    public UserInfo(int id, String username, String gender) {
        this.id = id;
        this.username = username;
        this.gender = gender;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    @Override
    public String toString() {
        return "UserInfo{" +
            "id=" + id +
            ", username='" + username + '\'' +
            ", gender='" + gender + '\'' +
            '}';
    }
}
5)、工具類(創建SqlSession)
package com.tonghua.utils;

import java.io.IOException;
import java.io.InputStream;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

public class MybatisUtils {

    private static SqlSessionFactory sqlSessionFactory;

    static {
        try {
            String resource = "mybatis-config.xml";
            InputStream inputStream = Resources.getResourceAsStream(resource);
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static SqlSession getSqlSession() {
        return sqlSessionFactory.openSession();
    }
}
6)、單元測試

UserInfoDaoTest.java

package com.tonghua.dao;

import com.tonghua.pojo.UserInfo;
import com.tonghua.utils.MybatisUtils;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;

public class UserInfoDaoTest {

    @Test
    public void test() {
        SqlSession sqlSession = MybatisUtils.getSqlSession();

        UserInfoMapper userInfoMapper = sqlSession.getMapper(UserInfoMapper.class);
        List<UserInfo> userList = userInfoMapper.selectUserList();

        for (UserInfo userInfo : userList) {
            System.out.println(userInfo);
        }

        sqlSession.close();
    }

}
7)、目錄結構圖

在這裏插入圖片描述
這是mybatis的一種連接方式,測試通過

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章