Contents

IDEA中使用Mybatis创建一个简单的项目

Contents

##0. 前期环境准备:

  • 新建一个普通 maven 项目 (不选择任何模板)
  • 删除 src 目录 (这样根目录的 pom.xml 就成了父工程配置文件)
  • 在 maven 配置文件(pom.xml)中导入依赖
  • 在 maven 配置文件(pom.xml)中加入防止资源导出失败的配置
  • 关于资源导出失败的配置, 最好也在子项目中的 pom.xml 中加入
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <!-- 父工程 -->
    <groupId>com.wgymt</groupId>
    <artifactId>Mybatis-Study</artifactId>
    <packaging>pom</packaging>
    <version>1.0-SNAPSHOT</version>
    <modules>
        <module>mybatis-01</module>
    </modules>

    <!-- 导入依赖 -->
    <dependencies>
        <!-- MySQL 驱动-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.46</version>
        </dependency>
        <!-- MyBatis 驱动-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.2</version>
        </dependency>
        <!-- junit -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <!-- 在 build 中配置 resources, 防止资源导出失败问题 -->
    <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>
        </resources>
    </build>

</project>

##1. 使用 mybatis 第一步 创建工具类: 文件路径: Mybatis-Study/mybatis-01/src/main/java/com/wgymt/utils/MybatisUtils.java

package com.wgymt.utils;

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;

// 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 (IOException e) {
         e.printStackTrace();
     }
 }

 // 有了 SqlSessionFactory, 我们就可以从中获取到 SqlSession 的实例
 // SqlSession 完全包含了面向数据库执行 SQL 命令所需的所有方法
 public static SqlSession getSqlSession() {
     return sqlSessionFactory.openSession();
 }
}

##2. 第二步 创建实体类: 文件路径: Mybatis-Study/mybatis-01/src/main/java/com/wgymt/pojo/User.java

package com.wgymt.pojo;

// 实体类
public class User {
 private int id;
 private String name;
 private String pwd;

 public User() {
 }

 public User(int id, String name, String pwd) {
     this.id = id;
     this.name = name;
     this.pwd = pwd;
 }

 public int getId() {
     return id;
 }

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

 public String getName() {
     return name;
 }

 public void setName(String name) {
     this.name = name;
 }

 public String getPwd() {
     return pwd;
 }

 public void setPwd(String pwd) {
     this.pwd = pwd;
 }

 @Override
 public String toString() {
     return "User{" +
             "id=" + id +
             ", name='" + name + '\'' +
             ", pwd='" + pwd + '\'' +
             '}';
 }
}

##3. 第三步创建 Dao 接口(mapper) 以及配置文件 文件路径: Mybatis-Study/mybatis-01/src/main/java/com/wgymt/dao/UserMapper.java

package com.wgymt.dao;

import com.wgymt.pojo.User;

import java.util.List;

public interface UserMapper {
    List<User> getUserList();
}

文件路径: Mybatis-Study/mybatis-01/src/main/java/com/wgymt/dao/UserMapper.xml

  • 接口实现类由原来的UserDaoImpl.java 转变成了一个 Mapper 配置文件
<?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">
<!-- namespace 绑定了一个对应的 Dao/Mapper 接口 -->
<mapper namespace="com.wgymt.dao.UserMapper">

 <!-- select 查询语句-->
 <select id="getUserList" resultType="com.wgymt.pojo.User">
     select * from mybatis.user;
 </select>

</mapper>```

##4. 第四步创建测试类 (junit 测试)
`文件路径: Mybatis-Study/mybatis-01/src/test/java/com/wgymt/dao/UserMapperTest.java`

```java
package com.wgymt.dao;

import com.wgymt.pojo.User;
import com.wgymt.utils.MybatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;

import java.util.List;


public class UserMapperTest {

 @Test
 public void test() {

     // 获取 SqlSession 对象
     SqlSession sqlSession = MybatisUtils.getSqlSession();

     // 执行 SQL
     UserMapper mapper = sqlSession.getMapper(UserMapper.class);
     List<User> userList = mapper.getUserList();

     for (User user : userList) {
         System.out.println(user);
     }

     // 关闭 SqlSession
     sqlSession.close();
 }
}