如何基於mybatis框架查詢資料庫表資料並列印
阿新 • • 發佈:2020-11-02
一、需求說明
使用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(); } }
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。