1. 导入相关jar包。

需要导入的jar包有两部分,一个是MyBatis的jar包。
另外由于MyBatis是操作数据库的,我们以MySQL数据库作为示范,所以还要导入MySQL数据库的jar包。
导入jar包的方式有很多种,最简单的就是去官网下载jar包,然后复制到代码目录里。
但这里我们通过添加MAVEN依赖的方式导入。

2. 通过MAVEN导入依赖。

至于MAVEN是什么,请参照本站有关MAVEN的文章。要说的是,MAVEN其实很简单。
需要添加的MAVEN依赖如下:

<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.5.3</version>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.6</version>
</dependency>

3. 导入并撰写配置文件mybatis-config.xml

  • mybatis-config.xml 用于配置mybatis的基本参数(数据库接口类型、用户名、密码)
  • 为了对应MAVEN目录结构,mybatis-config.xml放在resources目录下。
    基本上就是固定格式

    <?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"/> <!-- JDBC:手动完成事物管理; MANAGED:由第三方完成事物管理 -->
      <dataSource type="POOLED">        <!-- POOLED:使用数据库连接池;UNPOOLED:不使用数据库连接池 -->
        <property name="driver" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/java_all"/>
        <property name="username" value="root"/>
        <property name="password" value="123123"/>
      </dataSource>
    </environment>
    </environments>
    </configuration>

4. 创建Entity类和DAO接口

MyBatis的存在意义就是代替DAO接口实现类,所以不需要再创建DAO接口实现类了。

创建Entity类

/** 
 * 定义实体类
 * 1. 实体类定义在entity包下
 * 2. 实体类必须实现Serializable接口
 * 3. 实体类属性名字和数据库字段名一致,这样可以自动赋值
 * 4. 实体类属性数值类型使用包装类,并提供get、set方法
 * 5. 实体类必须提供无参数的构造方法
 * 6. 实体类可以重载toString方法,这样方便println直接使用。
 */
package com.royotech.entity;

import java.io.Serializable;

public class Person implements Serializable{
    private Integer id;
    private String name;
    private String birthday;
    private String telephone;
    private String address;

    public Person() {
        super();
    }

    public Integer getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

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

    public String getBirthday() {
        return birthday;
    }

    public void setBirthday(String birthday) {
        this.birthday = birthday;
    }

    public String getTelephone() {
        return telephone;
    }

    public void setTelephone(String telephone) {
        this.telephone = telephone;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    @Override
    public String toString() {
        return "Person [id=" + id + ", name=" + name + ", birthday=" + birthday + ", telephone=" + telephone
                + ", address=" + address + "]";
    }
}

创建DAO接口

/**
 * 
 * DAO:Data Access Object,DAO接口是Entity类和数据库之间的连接纽带,封装增删改查的操作。
 * 
 * DAO接口:实体类名+DAO,所有DAO接口都在DAO包下。
 *
 * 一个表 一个实体 一个DAO接口
 */

package com.royotech.dao;

import com.royotech.entity.Person;

public interface PersonDAO {
    public Person selectPersonById(Integer id);
}

5. 撰写XXXMapper.xml文件

撰写PersonDAOMapper.xml映射文件

  • XXXMapper.xml 配置一个DAO接口方法要执行的SQL语句。XXXMapper.xml文件和DAO接口一一对应。
  • 为了对应MAVEN目录结构,XXXMapper.xml放在resources/mappers子目录下。
    <?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.royotech.dao.PersonDAO"> <!-- 对应的DAO接口的全类名 -->
    <select id = "selectPersonById" resultType="com.royotech.entity.Person"> <!-- id对应类下面的方法名;resultType对应该方法的返回值类型-->
        select *
        from t_person
        where id = #{id}<!-- 方法中形参的名字 -->
    </select>
    </mapper>

6. 在mybatis-config.xml中注册mapper

<?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"/> <!-- JDBC:手动完成事物管理; MANAGED:由第三方完成事物管理 -->
      <dataSource type="POOLED">        <!-- POOLED:使用数据库连接池;UNPOOLED:不使用数据库连接池 -->
        <property name="driver" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/java_all"/>
        <property name="username" value="root"/>
        <property name="password" value="123123"/>
      </dataSource>
    </environment>
  </environments>
  <mappers>
    <mapper resource="mappers/PersonDAOMapper.xml"/>
  </mappers>
</configuration>

7. 大功告成,测试一下结果吧。

建立一个SelectPerson.java文件

package com.royotech.view;

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;

import com.royotech.dao.PersonDAO;
import com.royotech.entity.Person;

public class SelectPerson { 
    public static void main(String[] args) throws Exception{
        //1. 读取配置文件
        InputStream in = Resources.getResourceAsStream("mybatis-config.xml");
        //2. 获取SqlSessionFactory
        SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
        //3. 获取SqlSession
        SqlSession sqlSession = factory.openSession();
        //4. 获取PersonDAO实现类对象
        PersonDAO dao = sqlSession.getMapper(PersonDAO.class);
        //5. 调用DAO的方法
        Person p = dao.selectPersonById(3);
        System.out.println(p);

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

数据库结构、数据和运行结果如下:
file

One comment on “MyBatis项目环境搭建及第一个MyBatis程序

发表评论

邮箱地址不会被公开。 必填项已用*标注