MyBatis 查詢功能實現全流程

一、創建maven項目

配置好相應的jdk

二、在數據庫建立相應的表格

1.因為Mybatis實際是對sql表的一系列操作,所以我們新建一個數據庫

2.在查詢界面運行下面指令創建一個user表

CREATE TABLE `user` (`id` int(11) NOT NULL AUTO_INCREMENT,`username` varchar(32) NOT NULL COMMENT '用戶名稱',`birthday` datetime DEFAULT NULL COMMENT '生日',`sex` char(1) DEFAULT NULL COMMENT '性別',`address` varchar(256) DEFAULT NULL COMMENT '地址',PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;INSERT INTO `user` (`id`, `username`, `birthday`, `sex`, `address`) VALUES
(1, '老王', '2018-02-27 17:47:08', '男', '北京'),
(2, '熊大', '2018-03-02 15:09:37', '女', '上海'),
(3, '熊二', '2018-03-04 11:34:34', '男', '深圳'),
(4, '光頭強', '2018-03-04 12:04:06', '男', '廣州');

三、在項目中配置好Mybatis環境


1. 在設置中尋找文件和文件代碼模板,新增這兩個文件模板內容:

這是兩個文件的內容:

MyBatis.mapper.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace=""></mapper>

SqlMapConfig.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><environments default="mysql"><environment id="mysql"><!--配置事務的類型,使用本地事務策略--><transactionManager type="JDBC"></transactionManager><!--是否使用連接池 POOLED表示使用鏈接池,UNPOOLED表示不使用連接池--><dataSource type="POOLED"><property name="driver" value="com.mysql.jdbc.Driver"/><property name="url" value="jdbc:mysql://localhost:3306/mybatis_demo"/><property name="username" value="root"/><property name="password" value="2020"/></dataSource></environment></environments><mappers><mapper resource="mapper/UserDao.xml"></mapper></mappers>
</configuration>

?2.創建接口和實體類:

?實體類的內容為:
?

package com.qcby.entity;import java.util.Date;public class User {private int id;private String username;private Date birthday;private String sex;private String address;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;}@Overridepublic String toString() {return "User{" +"id=" + id +", username='" + username + '\'' +", birthday=" + birthday +", sex='" + sex + '\'' +", address='" + address + '\'' +'}';}
}

?3.配置Mybatis運行環境:

(1)引入Mybatis依賴(pom.xml):

在你引入依賴之前需要給idea配置好maven:

依賴代碼:

 <dependencies><!--mybatis核心包--><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.4.5</version></dependency><!--mysql驅動包--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.6</version></dependency><!-- 單元測試 --><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.10</version></dependency><!-- 日志 --><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version></dependency></dependencies>


(2)鏈接數據庫:

這是我們剛剛在文件與代碼模板中配置的代碼模板,現在我們直接使用:

創建完成之后要注意你的數據庫名字、密碼以及配置相應的字符集

(3)配置sql?

1.UseMapper.xml文件用于定義sql語句

<mapper namespace="com.qcby.dao.UserDao">

的作用對應dao接口

id是方法名稱

resultType是返回類型

2.UserDao接口:

定義與數據庫交互的方法。

?四、建立測試用例


測試代碼:

import com.qcby.dao.UserDao;
import com.qcby.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.After;
import org.junit.Before;
import org.junit.Test;import java.io.IOException;
import java.io.InputStream;
import java.util.Arrays;
import java.util.List;
public class UserTest {private InputStream in = null;private SqlSession session = null;private UserDao mapper = null;@Before  //前置通知, 在方法執行之前執行public void init() throws IOException {//加載主配置文件,目的是為了構建SqlSessionFactory對象in = Resources.getResourceAsStream("SqlMapConfig.xml");//創建SqlSessionFactory對象SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);//通過SqlSessionFactory工廠對象創建SqlSesssion對象session = factory.openSession();//通過Session創建UserDao接口代理對象mapper = session.getMapper(UserDao.class);}@After  //@After: 后置通知, 在方法執行之后執行 。public void destory() throws IOException {//釋放資源session.close();in.close();}@Testpublic  void find(){List<User> xx = mapper.findAll();for(User user : xx){System.out.println(user.toString());}}
}

測試結果:

?

這次的分享就到這里啦,感謝大家的觀看!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/83707.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/83707.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/83707.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

tcp/udp

tcp/udp協議概述 傳輸層協議基本概念 傳輸層協議建立在網絡層和會話層之間&#xff0c;為應用層實體提供端到端的通信功能&#xff0c;確保數據包的順序傳送及數據的完整性。它利用網絡層提供的服務&#xff0c;并通過傳輸層地址&#xff08;端口號&#xff09;提供給高層用戶…

k8s集群安裝坑點匯總

前言 由于使用最新的Rocky9.5,導致kubekey一鍵安裝用不了&#xff0c;退回Rocky8麻煩機器都建好了&#xff0c;決定手動安裝k8s&#xff0c;結果手動安裝過程中遇到各種坑&#xff0c;這里記錄下&#xff1b; k8s安裝 k8s具體安裝過程可自行搜索&#xff0c;或者deepseek; 也…

深入解析 Dotnet-Boxed.Framework:提升 .NET 開發效率的利器

在現代 .NET 開發中&#xff0c;框架和工具的選擇對項目的開發效率和長期維護至關重要。Dotnet-Boxed.Framework 是一個開源框架&#xff0c;旨在簡化開發流程&#xff0c;提高生產力。它通過一組實用的工具和自動化功能&#xff0c;幫助開發者快速構建高質量的應用程序。本文將…

如何輕松地將文件從 PC 傳輸到 iPhone?

傳統上&#xff0c;您可以使用 iTunes 將文件從 PC 傳輸到 iPhone&#xff0c;但現在&#xff0c;使用 iTunes 已不再是唯一的選擇。現在有多種不同且有效的方法可以幫助您傳輸文件。在今天的指南中&#xff0c;您可以找到 8 種使用或不使用 iTunes 傳輸文件的方法&#xff0c;…

Kafka深度解析與原理剖析

文章目錄 一、Kafka核心架構原理1. **分布式協調與選舉**2. **ISR、OSR與HW機制**3. **高性能存儲設計**4. **刷盤機制 (Flush)**5. **消息壓縮算法**二、高可用與消息可靠性保障1. **數據高可用策略**2. **消息丟失場景與規避**3. **順序消費保證**三、Kafka高頻面試題精析1. …

【教學類】20250605立體紙盤(3邊形-22邊形,角度5、10……40,45)

背景需求 在《自助餐》活動中&#xff0c; 【教學類-53-01】20240918自助餐餐盤-CSDN博客文章瀏覽閱讀984次&#xff0c;點贊29次&#xff0c;收藏11次。【教學類-53-01】20240918自助餐餐盤https://blog.csdn.net/reasonsummer/article/details/142340542?spm1011.2415.300…

GC1809:高性能24bit/192kHz音頻接收芯片解析

1. 芯片概述 GC1809 是數字音頻接收芯片&#xff0c;支持IEC60958、S/PDIF、AES3等協議&#xff0c;集成8選1輸入切換、低抖動時鐘恢復和24bit DAC&#xff0c;適用于家庭影院、汽車音響等高保真場景。 核心特性 高精度&#xff1a;24bit分辨率&#xff0c;動態范圍105dB&…

Next.js 中間件鑒權繞過漏洞 CVE-2025-29927

前言:CVE-2025-29927 是一個影響 Next.js 的嚴重漏洞&#xff0c;源于開發者信任了客戶端請求中攜帶的 X-Middleware-Rewrite 頭部字段。攻擊者可以手動構造該頭部&#xff0c;實現繞過中間件邏輯&#xff0c;訪問本應受保護的資源或 API。 影響版本&#xff1a;Next.js < …

第1章 數據分析簡介

第1章 數據分析簡介 1.1 數據分析 當今世界對信息技術依賴日深,每天產生和存儲海量數據,來源于自動檢測系統、傳感器、科學儀器,以及銀行取錢、買東西、寫博客、發微博等日常行為。 數據與信息在形式上不同:數據是無形式可言的字節流,難理解其本質;信息是對數據集處理后…

邊緣計算網關賦能沸石轉輪運行故障智能診斷的配置實例

一、項目背景 在環保行業&#xff0c;隨著國家對大氣污染治理要求的不斷提高&#xff0c;VOCs廢氣處理成為了眾多企業的重要任務。沸石轉輪作為一種高效的VOCs治理設備&#xff0c;被廣泛應用于石油化工、汽車制造、印刷包裝等主流行業。這些行業生產規模大、廢氣排放量多&…

20250602在Ubuntu20.04.6下修改壓縮包的日期和時間

rootrootrootroot-X99-Turbo:~$ ll -rwxrwxrwx 1 rootroot rootroot 36247187308 5月 23 10:23 Android13.0地面站.tgz* rootrootrootroot-X99-Turbo:~$ touch 1Android13.0地面站.tgz rootrootrootroot-X99-Turbo:~$ ll -rwxrwxrwx 1 rootroot rootroot 36247187308 6月…

windows無法安裝到這個磁盤,選中的磁盤采用gpt分區儀式

解決辦法&#xff1a; 我才用的是一個網友分享的微軟官方解決辦法&#xff0c;成功了&#xff0c;但是不知道會不會i有什么影響。將所有分區刪掉&#xff0c;這時磁盤變成為分配的空間。我個人是兩塊固態&#xff0c;一塊m.2&#xff0c;一塊sata&#xff1b;所以我直接將500g…

使用Composer創建公共類庫

概述 如果多個項目中存在使用相同類庫、模塊的情況&#xff0c;此時可以考慮將類庫或者模塊單獨抽取出來&#xff0c;形成獨立類庫&#xff0c;通過composer 來進行依賴管理&#xff0c;這樣可以更方便維護&#xff0c;大大提升開發效率。 優勢 可以對特定模塊進行統一維護和…

Ubuntu中TFTP服務器安裝使用

TFTP服務器 在 Ubuntu 下使用 TFTP&#xff08;Trivial File Transfer Protocol&#xff09; 服務&#xff0c;通常用于簡單的文件傳輸&#xff08;如網絡設備固件更新、嵌入式開發等&#xff09;。 1 TFTP服務器安裝 sudo apt-get install tftp-hpa sudo apt-get install…

前端面試總結

1.請做下自我介紹 技術棧 工作經歷 2.挑一個項目詳細講一下 介紹了一個項目的業務&#xff0c;重點講了一個動態表單的實現&#xff0c;從業務、擴展性、可維護性、性能提升 3.場景題&#xff1a;問答怎么做&#xff0c;表單之間關聯&#xff0c;回答不同問題跳轉到不同的下一個…

Python訓練打卡Day38

Dataset和Dataloader類 知識點回顧&#xff1a; Dataset類的__getitem__和__len__方法&#xff08;本質是python的特殊方法&#xff09;Dataloader類minist手寫數據集的了解 在遇到大規模數據集時&#xff0c;顯存常常無法一次性存儲所有數據&#xff0c;所以需要使用分批訓練的…

web3-區塊鏈基礎:從區塊添加機制到哈希加密與默克爾樹結構

區塊鏈基礎&#xff1a;從區塊添加機制到哈希加密與默克爾樹結構 什么是區塊鏈 抽象的回答: 區塊鏈提供了一種讓多個參與方在沒有一個唯一可信方的情況下達成合作 若有可信第三方 > 不需要區塊鏈 [金融系統中常常沒有可信的參與方] 像股票市場&#xff0c;或者一個國家的…

MySQL 索引:為使用 B+樹作為索引數據結構,而非 B樹、哈希表或二叉樹?

在數據庫的世界里&#xff0c;性能是永恒的追求。而索引&#xff0c;作為提升查詢速度的利器&#xff0c;其底層數據結構的選擇至關重要。如果你深入了解過 MySQL&#xff08;尤其是其主流存儲引擎 InnoDB&#xff09;&#xff0c;你會發現它不約而同地選擇了 B樹 作為索引的主…

Kafka broker 寫消息的過程

Producer → Kafka Broker → Replication → Consumer|Partition chosen (by key or round-robin)|Message appended to end of log (commit log)上面的流程是kafka 寫操作的大體流程。 kafka 不會特意保留message 在內存中&#xff0c;而是直接寫入了disk。 那么消費的時候&…

leetcode hot100(兩數之和、字母異位詞分組、最長連續序列)

兩數之和 題目鏈接 參考鏈接&#xff1a; 題目描述&#xff1a; 暴力法 雙重循環查找目標值 class Solution {public int[] twoSum(int[] nums, int target) {int[] res new int[2];for(int i 0 ; i < nums.length ; i){boolean isFind false;for(int j i 1 ; j …