mybatis学习(2)——入门实例

在上一篇博客中,我们已经把所有的准备工作做好了,包括数据库和mybatis下载等,接下我们进入一个实际的案例,来理解mybatis是如何工作的。

1、新建项目

这里使用的软件是IDEA,这个无关紧要,我们首先建立一个Java项目,工程最后的结构如下所示,我们将先前的mybatis的jar包(包括lib文件下的jar包)和java连接sqlite数据库的jar包,拷贝到lib文件夹中。

mybatis学习(2)——入门实例

2、定义一个实体POJO

首先我们我们需要定义一个实体POJO,这个实体就是我们之前在数据库中创建的student表。



package com.pojo;

public class Student {
    private int ID;
    private String Name;
    private String Sex;
    private float Grade;

    public int getID() {
        return ID;
    }

    public void setID(int ID) {
        this.ID = ID;
    }

    public String getName() {
        return Name;
    }

    public void setName(String name) {
        Name = name;
    }

    public String getSex() {
        return Sex;
    }

    public void setSex(String sex) {
        Sex = sex;
    }

    public float getGrade() {
        return Grade;
    }

    public void setGrade(float grade) {
        Grade = grade;
    }
}

 

3、编写配置文件

3.1  log4j配置文件

这个配置文件主要是用来输出日志信息的,我们在系统目录下新建一个log4j.properties文件,里面的内容如下:

log4j.rootLogger=DEBUG,stdout
log4j.logger.org.mybatis=DEBUG
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p %d %c: %m%n

3.2 基础配置文件

基础配置文件在mybatis项目中通常只有一个,主要用来配置一些最基本的上下文参数和运行环境,比如数据库的基本信息等。我们新建一个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>
    <typeAliases>
        <!--别名-->
        <typeAlias type="com.pojo.Student" alias="student"/>
    </typeAliases>
    <!--数据库环境-->
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"></transactionManager>
            <dataSource type="POOLED">
                <property name="driver" value="org.sqlite.JDBC"/>
                <property name="url" value="jdbc:sqlite:C:\\Users\\YZL\\test1.db"/>

                <!--
                由于我们使用的是sqlite数据库,开源免费的sqlite数据库是不需要用户名和密码的
                ,我们这里就不需要这两个属性
                <property name="username" value=""/>
                <property name="password" value=""/>
                -->
            </dataSource>
        </environment>
    </environments>
    <!--映射文件-->
    <mappers>
        <mapper resource="com/mapper/StudentMapper.xml"/>
    </mappers>
</configuration>

解释一下这个基础配置文件:

<typeAliases> 元素的定义了一个别名student,它代表的是com.pojo.Student这个类,这样我们在后面就可以直接使用student别名去使用这个类了。

<environments> 元素里面描述的连接数据库的参数。

<mapper> 元素的作用是引入那些映射器。

3.3 映射器

在编写映射器配置文件之前,我们首先编写一个映射器接口StudentMapper,这个接口很简单,就只有一个方法。

package com.mapper;

import com.pojo.Student;
public interface StudentMapper {
    public Student getStudentById(int id);
}

然后新建一个映射器文件StudentMapper.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.mapper.StudentMapper">
    <select id="getStudentById" resultType="student" parameterType="int">
        select ID,Name,Sex,Grade from student where id=#{id}
    </select>
</mapper>

对这个映射器文件解释一下:

<mapper> 元素的namespace属性的值是一个java接口的全限定名。

<select> 元素里面是一条查询语句,id属性标识这条sql语句,resultType表示返回结果类型,parameterType表示参数类型。这里的student就是之前的基础配置文件的配置的别名。

#{id} 表示传递进去的参数.。

上面的基础配置文件引入的就是这个文件。

mybatis学习(2)——入门实例

4、测试 

接下来,我们就可以新建一个测试类,测试一下,首先说明一下mybatis的运行的步骤:

  1. 首先利用构造器SqlSessionFactoryBuilder通过代码或者配置文件的方式来生成一个SqlSessionFactory;
  2. 依靠上面的SqlSessionFactory来获取一个SqlSession;
  3. 一个SqlSession既可以直接发送sql请求,也可以通过映射器接口获取一个Mapper接口,然后通过Mapper去发送sql请求(我们这里采用的是第二种方式);

下面贴上测试的Test类代码

package com.main;

import com.mapper.StudentMapper;
import com.pojo.Student;
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 org.apache.log4j.Logger;


import java.io.InputStream;


public class Test {
    public static void main(String[] args) {
        Logger log=Logger.getLogger(Test.class);

        SqlSessionFactory sqlSessionFactory=null;
        String resource="mybatis-config.xml";
        InputStream inputStream;
        SqlSession sqlSession=null;
        try {
            inputStream = Resources.getResourceAsStream(resource);

            //获取一个sqlSessionFactory
            sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
            //通过sqlSessionFactory获取一个sqlSession
            sqlSession=sqlSessionFactory.openSession();

            //根据映射器接口获取一个映射器
            StudentMapper studentMapper=sqlSession.getMapper(StudentMapper.class);
            //调用映射器中的getStudentById()方法,1为参数,返回类型是一个
            Student student=studentMapper.getStudentById(1);

            System.out.println("id: "+student.getID()+"  name: "+student.getName()+
            " sex: "+student.getSex()+" grade: "+student.getGrade());

        }catch (Exception e){
            e.printStackTrace();
        }finally {
            if(sqlSession!=null)
                sqlSession.close();
        }
    }
}

我们看一下最后的输出结果

mybatis学习(2)——入门实例

至此,mybatis的入门实例已经完成。