MyBatis数据持久化(二)建立数据库会话

上篇文章中介绍了我们使用mybatis前的准备工作,并在程序中通过jdbc与mysql数据库成功建立连接,接下来介绍如何使用mybatis与数据库建立会话。我们需要以下几个步骤:
1.在build path中引入mybatis的jar包。

2.新建mybatis数据库配置文件SqlMapConfig.xml,它是一个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.jdbc.Driver"/>
            <property name="url" value="jdbc:mysql://localhost:3306/mybatis?characterEncoding=UTF8"/>
            <property name="username" value="root"/>
            <property name="password" value=""/>
        </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="User.xml"/>
    </mappers>
</configuration>

3.新建sql语句配置文件User.xml,我们所有的sql语句均写在该文件中,内容如下:

<?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="User">
    <select id="queryUserInfoByName" parameterType="string"  
            resultType="com.mybatis.domain.User">
        select * from User where username = #{username}
    </select>
</mapper>

这里我们通过select标签添加一条select语句,并通过mapper标签的namespace属性为这些sql增加一个命名空间。
4.新建持久化映射类com.mybatis.domain.User,内容如下:

package com.mybatis.domain;

public class User {

    private String username;
    private String password;
    private String phone;
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    public String getPhone() {
        return phone;
    }
    public void setPhone(String phone) {
        this.phone = phone;
    }
    //为方便输出信息,我们重写toString方法
    @Override
    public String toString() {
        return  "username:" + username + ",password:" + password + ",phone" + phone;
    }

}

User类有三个属性,分别和数据库中的字段对应,我们需要为每个属性增加setter和getter方法,除此之外,为了方便我们打印对象的属性信息,笔者重写了User类的toString方法。

5.新建测试类com.mybatis.exam2.MyBatisConn,代码如下:

package com.mybatis.exam2;

import java.io.Reader;
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.junit.Test;
import com.mybatis.domain.User;

public class MyBatisConn{
    @Test
    public void testMybatisConn()
    {   
        SqlSession session = null;
        try {
            Reader reader = Resources.getResourceAsReader("SqlMapConfig.xml");
            SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
            //创建一个数据库会话
            session = sessionFactory.openSession();
            User user = (User)session.selectOne("User.queryUserInfoByName","小王");
            //此处会调用user的toString方法
            System.out.println(user);

        } catch (Exception e) {
            // TODO Auto-generated catch block
            if(null != session)
            {
                session.close();
            }
            e.printStackTrace();
        }
        //关闭会话
        if(null != session)
        {
            session.close();
        }
    }
}

要建立数据库会话,我们首先需要一个SqlSessionFactory对象,可以通过SqlSessionFactoryBuilder对象的build方法获取,它需要一个和数据库配置文件相关的输入流作为参数。
我们通过 Resources.getResourceAsReader("SqlMapConfig.xml")获取一个输入流对象。
有了SqlSessionFactory对象,我们通过SqlSessionFactory类的openSession方法就可以建立一个数据库会话,它返回一个DefaultSqlSession对象。

通过DefaultSqlSession对象,我们可以对数据库进行各种操作,这里调用selectOne方法进行查询,第一个参数指定sql配置文件中配置的sql语句,形式为命名空间 + sql语句的ID。第二个参数会被传递到sql中:

select * from User where username = #{username}

我们通过#{username}这种形式定义个一个占位符,在本例中最终生成的sql语句为:

select * from User where username = '小王'

最后当数据库会话不再使用时,一定不要忘了关闭。

6.在Outline视图MyBatisConn的testMybatisConn方法上点击右键,Debug As->Junit Test。
控制台中输出:

username:小王,password:123456a,phone13535999538

整个项目的文件结构如下图所示:
这里写图片描述

在接下来的文章中,我们会接触到更多关于mybatis的配置和使用方法。

项目源码:https://github.com/rongbo-j/mybatis-blog

原文地址:https://www.cnblogs.com/lanzhi/p/6468744.html