如何基于mybatis框架查詢數(shù)據(jù)庫(kù)表數(shù)據(jù)并打印
一、需求說(shuō)明
使用mybatis框架查詢數(shù)據(jù)庫(kù)user表數(shù)據(jù)并打印到控制臺(tái)上

二、數(shù)據(jù)庫(kù)數(shù)據(jù)準(zhǔn)備
-- 創(chuàng)建用戶表 create table user ( id int primary key auto_increment, username varchar(20) not null, birthday date, sex char(1) default '男', address varchar(50) ); -- 添加用戶數(shù)據(jù) 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','女','盤(pán)絲洞'); -- 查詢用戶數(shù)據(jù) select * from user;
三、實(shí)現(xiàn)步驟
3.1 創(chuàng)建模塊3
.2 導(dǎo)入Mybatis框架jar包

3.3 編寫(xiě)用戶實(shí)體類(lèi):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 編寫(xiě)dao接口:UserMapper
package com.vg.dao;
import com.vg.entity.User;
import java.util.List;
/**
* 數(shù)據(jù)訪問(wèn)層接口:對(duì)用戶進(jìn)行增刪改查操作
* */
public interface UserMapper {
/**
* 查詢所有用戶
* */
List<User> findAllUsers();
}
3.5 編寫(xiě)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 編寫(xiě)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 編寫(xiě)測(cè)試類(lèi)
package com.vg.test;
import org.junit.Test;
/**
* 測(cè)試類(lèi)
*/
public class TestUserMapper {
/**
* 測(cè)試方法:查詢所有學(xué)生
*/
@Test
public void testFindAllUsers(){
}
}
四、完善sqlMapConfig.xml
4.1 目標(biāo)
完成mybatis主配置文件相關(guān)信息的配置:數(shù)據(jù)庫(kù)環(huán)境信息配置,包括如下:
- 導(dǎo)入mybatis約束(復(fù)制約束信息)
- 數(shù)據(jù)庫(kù)事務(wù)配置
- 數(shù)據(jù)庫(kù)連接信息配置
- 連接池信息配置
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標(biāo)簽作用:配置數(shù)據(jù)庫(kù)環(huán)境
default:設(shè)置默認(rèn)的數(shù)據(jù)庫(kù)環(huán)境
environment:用來(lái)配置一個(gè)數(shù)據(jù)庫(kù)的環(huán)境信息
-->
<environments default="develop">
<!--用來(lái)配置一個(gè)數(shù)據(jù)庫(kù)的環(huán)境信息
id:配置環(huán)境信息的唯一標(biāo)識(shí)
-->
<environment id="develop">
<!--
transactionManager:配置事務(wù)管理器
type:設(shè)置事務(wù)管理器的類(lèi)型,取值有type=“[JDBC|MANAGED]”
JDBC:事務(wù)管理使用JDBC的管理方式
MANAGED:事務(wù)交給容器管理(mybatis不管理),后續(xù)交給spring容器管理。
-->
<transactionManager type="JDBC"></transactionManager>
<!--
dataSource:配置數(shù)據(jù)源(連接池)信息
type:設(shè)置數(shù)據(jù)源類(lèi)型,常用的值有:unpooled 和 pooled
unpooled:不使用連接池,每次都重新獲取連接操作數(shù)據(jù)
pooled:使用mybatis內(nèi)置的連接池
-->
<dataSource type="POOLED">
<!--數(shù)據(jù)庫(kù)驅(qū)動(dòng)字符串-->
<property name="driver" value="com.mysql.jdbc.Driver"/>
<!--數(shù)據(jù)庫(kù)驅(qū)動(dòng)字符串-->
<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 目標(biāo)
完成接口映射配置文件UserMapper.xml的編寫(xiě):這個(gè)映射文件就相當(dāng)于UserMapper接口實(shí)現(xiàn)類(lèi)配置
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">
<!--
映射的作用:一個(gè)映射文件就對(duì)應(yīng)一個(gè)接口,一個(gè)接口可以有多個(gè)映射文件,一般是一對(duì)一關(guān)系。
mapper標(biāo)簽的namespace屬性的作用:關(guān)聯(lián)接口,需要配置對(duì)應(yīng)接口的類(lèi)全名字符串
-->
<mapper namespace="com.vg.dao.UserMapper">
<!-- 完成接口映射配置文件UserMapper.xml的編寫(xiě):這個(gè)映射文件就相當(dāng)于UserMapper接口實(shí)現(xiàn)類(lèi)配置 -->
<!--select標(biāo)簽的作用:用來(lái)配置查詢要執(zhí)行的SQL語(yǔ)句
id屬性:關(guān)聯(lián)接口中的方法名
resultType屬性:設(shè)置方法返回的數(shù)據(jù)類(lèi)型,如果是集合則配置集合元素的類(lèi)型
-->
<select id="findAllUsers" resultType="com.vg.entity.User">
select * from user
</select>
</mapper>
5.3 在sqlMapConfig.xml中加載接口映射配置文件
<!--mappers標(biāo)簽的作用:用來(lái)配置接口映射文件-->
<mappers>
<!--mapper標(biāo)簽:一個(gè)該標(biāo)簽就配置一個(gè)接口映射文件
resource屬性:配置映射文件的路徑,路徑分隔符使用 / : com/vg/dao/UserMapper.xml
url:用于配置互聯(lián)網(wǎng)上的映射文件的路徑,比如:http://www.baidu.com/xxx.xml
-->
<mapper resource="com/vg/dao/UserMapper.xml"></mapper>
</mappers>
六、編寫(xiě)測(cè)試類(lèi)運(yùn)行
6.1 運(yùn)行效果

6.2 實(shí)現(xiàn)步驟
- 1. 通過(guò)Resources類(lèi),加載sqlMapConfig.xml,得到文件輸入流對(duì)象
- 2. 實(shí)例化會(huì)話工廠創(chuàng)建類(lèi)SqlSessionFactoryBuilder
- 3. 通過(guò)會(huì)話工廠創(chuàng)建類(lèi),讀取上面的輸入流,得到會(huì)話工廠SqlSessionFactory類(lèi)
- 4. 使用SqlSessionFactory對(duì)象,創(chuàng)建SqlSession對(duì)象
- a) 它相當(dāng)于JDBC中的Connection對(duì)象,提供了操作數(shù)據(jù)庫(kù)的CRUD方法
- b) 它提供了一個(gè)getMapper()方法,獲取接口的實(shí)現(xiàn)對(duì)象。
- 5. 獲取接口 UserMapper 實(shí)現(xiàn)類(lèi)對(duì)象
- 6. 執(zhí)行數(shù)據(jù)庫(kù)的查詢操作,輸出用戶信息
- 7. 關(guān)閉會(huì)話,釋放資源。
6.3 測(cè)試類(lèi)代碼
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;
/**
* 測(cè)試類(lèi)
*/
public class TestUserMapper {
/**
* 測(cè)試方法:查詢所有學(xué)生
* SqlSessionFactoryBuilder=>SqlSessionFactory=>Sqlsession:相當(dāng)于JDBC中的Connection對(duì)象
*/
@Test
public void testFindAllUsers() throws Exception{
//1. 通過(guò)Resources類(lèi),加載sqlMapConfig.xml,得到文件輸入流對(duì)象
// Resources類(lèi)作用:專門(mén)讀取src目錄下的資源文件
InputStream in = Resources.getResourceAsStream("sqlMapConfig.xml");
//2. 實(shí)例化會(huì)話工廠創(chuàng)建類(lèi)SqlSessionFactoryBuilder
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
//3. 通過(guò)會(huì)話工廠創(chuàng)建類(lèi),讀取上面的輸入流,得到會(huì)話工廠SqlSessionFactory類(lèi)
SqlSessionFactory sqlSessionFactory = builder.build(in);
//4. 使用SqlSessionFactory對(duì)象,創(chuàng)建SqlSession對(duì)象
//a) 它相當(dāng)于JDBC中的Connection對(duì)象,提供了操作數(shù)據(jù)庫(kù)的CRUD方法
//b) 它提供了一個(gè)getMapper()方法,獲取接口的實(shí)現(xiàn)對(duì)象。
SqlSession sqlSession = sqlSessionFactory.openSession();
//5. 獲取接口 UserMapper 實(shí)現(xiàn)類(lèi)對(duì)象
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
System.out.println("userMapper = " +userMapper);
//6. 執(zhí)行數(shù)據(jù)庫(kù)的查詢操作,輸出用戶信息
List<User> userList = userMapper.findAllUsers();
for (User user : userList) {
System.out.println(user);
}
//7. 關(guān)閉會(huì)話,釋放資源。
sqlSession.close();
}
}
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
解決使用RestTemplate時(shí)報(bào)錯(cuò)RestClientException的問(wèn)題
這篇文章主要介紹了解決使用RestTemplate時(shí)報(bào)錯(cuò)RestClientException的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-08-08
Spring?Initializr只能創(chuàng)建為Java?17版本以上的問(wèn)題解決
這篇文章主要給大家介紹了關(guān)于Spring?Initializr只能創(chuàng)建為Java?17版本以上問(wèn)題的解決辦法,文中通過(guò)圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2024-01-01
SpringBoot啟動(dòng)遇到的異常問(wèn)題及解決方案
這篇文章主要介紹了SpringBoot啟動(dòng)遇到的異常問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-02-02
Java自動(dòng)取款機(jī)ATM案例實(shí)現(xiàn)
本文主要介紹了Java自動(dòng)取款機(jī)ATM案例實(shí)現(xiàn),整個(gè)過(guò)程可以分為三部分:登錄賬戶和執(zhí)行取款操作,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-08-08
Java LinkedHashSet集合的底層原理和TreeSet集合
java實(shí)現(xiàn)微信支付結(jié)果通知

