Mybatis 环境搭建并简单测试

Mybatis 环境搭建

很多新人在一开始学习mybatis 的时候虽然看懂开发者文档不是什么难事,但是在搭建环境的时候就总会出现一些莫名其妙的错误信息,比如说我自己。所以我现在整理了一下步骤,做一个记录,也提供给一些初学者做一个参考,我使用的是IDEA开发工具。

1. 新建Maven项目

然后:

然后点击 finish 就好了:

新建的项目工程结构如图;

2. 配置文件

  1. 项目已经创建成功,既然是 Mybatis 项目,那么久需要引入Mybatis的依赖:

    maven下载地址

    下载Mybatis 的依赖,并引入;

    <dependencies>
        <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.6</version>
        </dependency>
    </dependencies>

​ 效果如下:

​ Mybatis 是持久层,所以需要mysql的驱动 依赖

    <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>8.0.15</version>
    </dependency>
  1. 依赖引入之后,接下来就是要进行配置了:

    这里参考Mybatis 官方文档的 配置文件格式:

    mybatis 官方文档

    在 resource 目录下新建一个 mybatis-config.xml 文件

    文件内容如下:

<?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>
  <environments default="development">
    <environment id="development">
      <transactionManager type="JDBC"/>
      <dataSource type="POOLED">
        <property name="driver" value="${driver}"/>
        <property name="url" value="${url}"/>
        <property name="username" value="${username}"/>
        <property name="password" value="${password}"/>
      </dataSource>
    </environment>
  </environments>
  <mappers>
     <!--        <mapper resource="org/mybatis/example/BlogMapper.xml"/>-->
      
  </mappers>
</configuration>

  1. 修改 mybatis-config.xml 文件的相关参数:

    这里记得改成自己对应的数据库信息

<?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>
    <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=true&amp;useUnicode=true&amp;characterEncoding=UFT-8"/>
                <property name="username" value="xxxx"/>
                <property name="password" value="xxxxxx"/>
                <!-- 这里记得改成自己数据库对应的参数-->
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <!--        <mapper resource="org/mybatis/example/BlogMapper.xml"/>-->

    </mappers>
</configuration>

3. 建立table 映射的实体

即创建一个实体类:

这个实体类的字段都是跟数据库中表的字段保持一致的:

package cn.kingshion.entity;

public class Users {
    int id;
    String name;
    String password;

    public Users() {
    }

    public Users(int id, String name, String password) {
        this.id = id;
        this.name = name;
        this.password = password;
    }

    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 getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

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


4. 建立接口,设计可操作的方法

在这里先创建一个接口类,然后定义一个数据库查询的方法:(当然接口里面的都是抽象方法,在mybatis 中的一个好处就是我们不要额外的去写一个实现类去实现这个接口,并且写很多冗余的CRUD 语句,可以这么理解 Mybatis 中所有的操作都是基于接口和映射文件进行配置的)
    
package cn.kingshion.dao;

import java.util.List;

public interface UsersDao {

    public<Users> List getUsers();
}

5. 创建Mapper映射文件:

  1. 在 resource 文件夹下 新建映射文件 UsersMapper.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="cn.kingshion.dao.UsersDao">
    <select id="getUsers" resultType="cn.kingshion.entity.Users">
    select * from users
  </select>
</mapper>

注意:

前面的 namespace 中写的是接口的路径;
select 中 id 是 接口中的方法;
resultType 是 实体类的返回类型;
select * from users 是数据库查询语句;

6. 在 Mybatis 配置文件 mybatis-config.xml 中 添加 Mapper 的配置

  1. 将之前写的 UsersMapper.xml 文件添加到 mybatis-config.xml 文件的 mappers 中: ·

7. 完成并测试

​ 这个时候已经配置完成了,接下来就是测试自己的Mybatis到底有没有配置成功了:

​ 直接在 Maven的 test 文件夹下新建测试类:​

package cn.kingshion;

import cn.kingshion.dao.UsersDao;
import cn.kingshion.entity.Users;
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;
import java.util.List;

public class MybatisTest {
    public static void main(String[] args) {
//        String resource = "org/mybatis/example/mybatis-config.xml";
        //  找到 mybatis-config.xml 文件路径,默认的根路径:resource文件夹
        String resource = "mybatis-config.xml";
        InputStream inputStream = null;
        try {
            // 创建一个流来读取配置文件
            inputStream = Resources.getResourceAsStream(resource);

//        使用下面两句 语句跟第三句的效果是一样的。
//        SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
//        SqlSessionFactory factory = builder.build(inputStream);
            // 通过inputStream 加载配置文件,然后创建 SqlSessionFactoryBuilder
            // 再通过 SqlSessionFactoryBuilder  创建一个 工厂 SqlSessionFactory
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

            // 用工厂建立 session 对象
            SqlSession session = sqlSessionFactory.openSession();

            // 使用 映射进行数据库操作
            UsersDao usersMapper = session.getMapper(UsersDao.class);
            List<Users> list = usersMapper.getUsers();

            for (Users user : list) {
                System.out.println(user);
            }
            // 记得关闭会话 和io流
            session.close();

            inputStream.close();

        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}

8. 使用注解方式

  1. 修改 mybatis-config.xml 配置文件的mapper 映射

        <mappers>
            <!--
                使用非注解方式
                指向映射文件
            -->
            <!--        <mapper resource="cn/kingshion/dao/UsersMapper.xml"/>-->
    
            <!--
                使用注解方式
                指向接口
            -->
            <mapper class="cn.kingshion.dao.UsersDao"/>
    
        </mappers>
    
    
  2. 在接口里面使用注解的方式:

    package cn.kingshion.dao;
    
    import cn.kingshion.entity.Users;
    import org.apache.ibatis.annotations.Select;
    
    import java.util.List;
    
    public interface UsersDao {
    
        @Select("select * from users where id =1")
        public List<Users> getUsers();
    }
    
    
  3. 最后测试

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