Mybatis入門——使用mybatis框架查詢數據庫表數據並打印到控制台上


一、需求說明

  • 使用mybatis框架查詢數據庫user表數據並打印到控制台上

二、數據庫數據准備

-- 創建用戶表
create table user (
  id int primary key auto_increment,
  username varchar(20) not null,
  birthday date,
  sex char(1) default '男',
  address varchar(50)
);

-- 添加用戶數據
insert into user values (null, '孫悟空','1980-10-24','男','花果山水簾洞');
insert into user values (null, '白骨精','1992-11-12','女','白虎嶺白骨洞');
insert into user values (null, '豬八戒','1983-05-20','男','福臨山雲棧洞');
insert into user values (null, '蜘蛛精','1995-03-22','女','盤絲洞');

-- 查詢用戶數據
select * from user;

三、實現步驟

3.1 創建模塊

3.2 導入Mybatis框架jar包

3.3 編寫用戶實體類:User

package com.vg.entity;

import java.util.Date;

public class User {
    private int id;
    private String username;
    private Date birthday;
    private String sex;
    private String address;

    //alt+insert快速生成getter/setter方法
    public int getId() {
        return id;
    }

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

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public Date getBirthday() {
        return birthday;
    }

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

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public String getAddress() {
        return address;
    }

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

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", birthday=" + birthday +
                ", sex='" + sex + '\'' +
                ", address='" + address + '\'' +
                '}';
    }
}

3.4 編寫dao接口:UserMapper

package com.vg.dao;

import com.vg.entity.User;

import java.util.List;
/**
 * 數據訪問層接口:對用戶進行增刪改查操作
 * */
public interface UserMapper {
    /**
     * 查詢所有用戶
     * */
    List<User> findAllUsers();
}

3.5 編寫dao接口映射文件:UserMapper.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>
    
</mapper>

3.6 編寫Mybatis主配置文件:sqlMapConfig.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>
    
</configuration>

3.7 編寫測試類

package com.vg.test;

import org.junit.Test;

/**
 * 測試類
 */
public class TestUserMapper {

    /**
     * 測試方法:查詢所有學生
     */
    @Test
    public void testFindAllUsers(){
        
    }
}

四、完善sqlMapConfig.xml

4.1 目標

完成mybatis主配置文件相關信息的配置:數據庫環境信息配置,包括如下:
	  	導入mybatis約束(復制約束信息)
		數據庫事務配置
		數據庫連接信息配置
		連接池信息配置

4.2 sqlMapConfig.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:設置默認的數據庫環境
        environment:用來配置一個數據庫的環境信息
    -->
    <environments default="develop">
        <!--用來配置一個數據庫的環境信息
            id:配置環境信息的唯一標識
        -->
        <environment id="develop">
            <!--
                transactionManager:配置事務管理器
                    type:設置事務管理器的類型,取值有type=“[JDBC|MANAGED]”
                        JDBC:事務管理使用JDBC的管理方式
                        MANAGED:事務交給容器管理(mybatis不管理),后續交給spring容器管理。

            -->
            <transactionManager type="JDBC"></transactionManager>
            <!--
                dataSource:配置數據源(連接池)信息
                    type:設置數據源類型,常用的值有:unpooled 和 pooled
                        unpooled:不使用連接池,每次都重新獲取連接操作數據
                        pooled:使用mybatis內置的連接池
            -->
            <dataSource type="POOLED">
                <!--數據庫驅動字符串-->
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <!--數據庫驅動字符串-->
                <property name="url" value="jdbc:mysql://localhost:3306/test"/>
                <!--用戶名-->
                <property name="username" value="root"/>
                <!--密碼-->
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>
</configuration>

五、完善UserMapper.xml文件

5.1 目標

完成接口映射配置文件UserMapper.xml的編寫:這個映射文件就相當於UserMapper接口實現類配置

5.2 UserMapper.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屬性的作用:關聯接口,需要配置對應接口的類全名字符串
-->
<mapper namespace="com.vg.dao.UserMapper">
    <!-- 完成接口映射配置文件UserMapper.xml的編寫:這個映射文件就相當於UserMapper接口實現類配置 -->

    <!--select標簽的作用:用來配置查詢要執行的SQL語句
        id屬性:關聯接口中的方法名
        resultType屬性:設置方法返回的數據類型,如果是集合則配置集合元素的類型
    -->
    <select id="findAllUsers" resultType="com.vg.entity.User">
        select * from user
    </select>
</mapper>

5.3 在sqlMapConfig.xml中加載接口映射配置文件

 <!--mappers標簽的作用:用來配置接口映射文件-->
    <mappers>
        <!--mapper標簽:一個該標簽就配置一個接口映射文件
            resource屬性:配置映射文件的路徑,路徑分隔符使用 / : com/vg/dao/UserMapper.xml
            url:用於配置互聯網上的映射文件的路徑,比如:http://www.baidu.com/xxx.xml
        -->
        <mapper resource="com/vg/dao/UserMapper.xml"></mapper>
    </mappers>

六、編寫測試類運行

6.1 運行效果

6.2 實現步驟

1. 通過Resources類,加載sqlMapConfig.xml,得到文件輸入流對象 
2. 實例化會話工廠創建類SqlSessionFactoryBuilder
3. 通過會話工廠創建類,讀取上面的輸入流,得到會話工廠SqlSessionFactory類
4. 使用SqlSessionFactory對象,創建SqlSession對象
   		a) 它相當於JDBC中的Connection對象,提供了操作數據庫的CRUD方法
   		b) 它提供了一個getMapper()方法,獲取接口的實現對象。
5. 獲取接口 UserMapper 實現類對象
6. 執行數據庫的查詢操作,輸出用戶信息
7. 關閉會話,釋放資源。

6.3 測試類代碼

package com.vg.test;

import com.vg.dao.UserMapper;
import com.vg.entity.User;
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 java.io.InputStream;
import java.util.List;

/**
 * 測試類
 */
public class TestUserMapper {
    /**
     * 測試方法:查詢所有學生
     * SqlSessionFactoryBuilder=>SqlSessionFactory=>Sqlsession:相當於JDBC中的Connection對象
     */
    @Test
    public void testFindAllUsers() throws  Exception{
        //1. 通過Resources類,加載sqlMapConfig.xml,得到文件輸入流對象
        // Resources類作用:專門讀取src目錄下的資源文件
        InputStream in = Resources.getResourceAsStream("sqlMapConfig.xml");
        //2. 實例化會話工廠創建類SqlSessionFactoryBuilder
        SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
        //3. 通過會話工廠創建類,讀取上面的輸入流,得到會話工廠SqlSessionFactory類
        SqlSessionFactory sqlSessionFactory = builder.build(in);
        //4. 使用SqlSessionFactory對象,創建SqlSession對象
        //a) 它相當於JDBC中的Connection對象,提供了操作數據庫的CRUD方法
        //b) 它提供了一個getMapper()方法,獲取接口的實現對象。
        SqlSession sqlSession = sqlSessionFactory.openSession();
        //5. 獲取接口 UserMapper 實現類對象
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        System.out.println("userMapper = " +userMapper);
        //6. 執行數據庫的查詢操作,輸出用戶信息
        List<User> userList = userMapper.findAllUsers();
        for (User user : userList) {
            System.out.println(user);
        }
        //7. 關閉會話,釋放資源。
        sqlSession.close();
    }
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM