1. 程式人生 > 程式設計 >如何基於mybatis框架查詢資料庫表資料並列印

如何基於mybatis框架查詢資料庫表資料並列印

一、需求說明

使用mybatis框架查詢資料庫user表資料並列印到控制檯上

如何基於mybatis框架查詢資料庫表資料並列印

二、資料庫資料準備

-- 建立使用者表
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包

如何基於mybatis框架查詢資料庫表資料並列印

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 執行效果

如何基於mybatis框架查詢資料庫表資料並列印

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();
  }
}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。