Spring框架學習day4--Spring集成Mybatis(IOC)

  • Spring集成Mybatis
    • 1.添加jar包(pom.xml)
    • 2.配置sqlSessionFactiory(spring.xml)
    • 3.再service類中注入Dao代理接口
    • 4.測試類
    • 5文件結構

Spring集成Mybatis

Spring集成Mybatis其核心是將SqlSessionFactory交由Spring管理,并由 Spring管理對dao接口的代理實現。 導入mybatisjar包

創建新的ssm項目為例文件結構如下

1.添加jar包(pom.xml)

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.example</groupId><artifactId>ssm</artifactId><version>1.0-SNAPSHOT</version><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.2.2.RELEASE</version></dependency><!-- spring-jdbc--><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>5.2.2.RELEASE</version></dependency><!-- 阿里數據源--><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.10</version></dependency><!--        mysql驅動--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.16</version></dependency><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.4.2</version></dependency><dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>1.3.1</version></dependency></dependencies>
</project>

image-20250529222630979

2.配置sqlSessionFactiory(spring.xml)

<!--    spring管理生成SqlSessionFactory--><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><property name="dataSource" ref="dataSource"></property><property name="configLocation" value="classpath:mybatis.xml"></property>
<!--        指定配置文件--><property name="mapperLocations" value="classpath:mappers/*Mapper.xml">
<!--            指定文件地址--></property></bean>

生成接口代理(spring.xml)

<!--    spring管理生成接口代理對象--><bean id="mapperFactory" class="org.mybatis.spring.mapper.MapperScannerConfigurer"><property name="basePackage" value="org.example.dao"></property>
<!--        對指定包下的接口進行掃描,并生成接口代理的對象--><property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property></bean>

完整spring.xml配置如下

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beanshttps://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsd
"><!--        開啟注解掃描  對指定包下的注解進行掃描 ,檢查添加spring類注解標簽的類--><context:component-scan base-package="org.example" ></context:component-scan><context:property-placeholder location="config.properties"/><bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"><!--       方法一:通過配置文件配置數據源--><!--                <property name="driverClassName" value="com.mysql.jdbc.cj.Driver"/>--><!--        <property name="url" value="數據庫連接/>--><!--        <property name="username" value="root"/>--><!--        <property name="password" value="root"/>--><!--        <property name="initialSize" value="1"/>--><!--        <property name="maxActive" value="1"/>--><!-- 方法二:通過注解配置數據源--><property name="driverClassName" value="${driverClassName}"/><property name="url" value="${url}"/><property name="username" value="${username}"/><property name="password" value="${password}"/><property name="initialSize" value="${initialSize}"/><property name="maxActive" value="${maxActive}"/></bean>
<!--    spring管理生成SqlSessionFactory--><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><property name="dataSource" ref="dataSource"></property><property name="configLocation" value="classpath:mybatis.xml"></property>
<!--        指定配置文件--><property name="mapperLocations" value="classpath:mappers/*Mapper.xml">
<!--            指定文件地址--></property></bean>
<!--    spring管理生成接口代理對象--><bean id="mapperFactory" class="org.mybatis.spring.mapper.MapperScannerConfigurer"><property name="basePackage" value="org.example.dao"></property>
<!--        對指定包下的接口進行掃描,并生成接口代理的對象--><property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property></bean>
</beans>

注:對應的mybatis.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><settings><!--        打印日志--><setting name="logImpl" value="STDOUT_LOGGING"/><!--            開啟駝峰命名規則--><setting name="mapUnderscoreToCamelCase" value="true"/></settings><!--    為類配置起別名--><typeAliases><!--        下面別名怎么引用呢?  直接在xml文件中使用別名就可以了--><typeAlias type="org.example.model.Admin" alias="Admin"/></typeAliases>
</configuration>

3.再service類中注入Dao代理接口

@Service("loginService")
public class LoginService {@AutowiredLoginDao loginDao;public Admin login(Admin admin){return loginDao.login(admin);}
}

4.測試類

package org.example.test;import org.example.model.Admin;
import org.example.service.LoginService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class test {public static void main(String[] args) {ApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");Admin admin = context.getBean("admin", Admin.class);admin.setAccount("admin");admin.setPassword("111");LoginService loginService = context.getBean("loginService", LoginService.class);Admin result = loginService.login(admin);System.out.println(result);}
}

5文件結構

image-20250529223641884

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

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

相關文章

可靠數據傳輸原理

目錄 構造可靠數據傳輸協議 一、rdt1.0&#xff1a;理想信道下的可靠傳輸 核心假設與功能 二、rdt 2.0&#xff1a;帶差錯檢測的停等協議 核心假設與功能 三、rdt 2.1&#xff1a;修復 ACK/NAK 不可靠性 核心改進 四、rdt 2.2&#xff1a;純 ACK 實現的可靠傳輸 核心改…

Python Day33

Task&#xff1a; MLP神經網絡的訓練 1.PyTorch和cuda的安裝 2.查看顯卡信息的命令行命令&#xff08;cmd中使用&#xff09; 3.cuda的檢查 4.簡單神經網絡的流程 a.數據預處理&#xff08;歸一化、轉換成張量&#xff09; b.模型的定義 i.繼承nn.Module類 ii.定義每一個層 iii…

社群分享:義烏|杭州電商|店群賣家,私域魚塘運營的排單系統開源|私域魚塘運營|返款軟件開源

熟悉東哥的朋友都知道&#xff0c;我自己也運營一個電商社群&#xff0c;主要是針對玩私域|魚塘的電商玩家。 在當前電商環境下&#xff0c;社群分享型電商、店群賣家及私域魚塘運營者&#xff0c;面臨著日益復雜的訂單管理和客服調度問題。傳統的人工處理不僅效率低…

github雙重認證怎么做

引言 好久沒登陸github了&#xff0c; 今天登陸github后&#xff0c;提醒進行2FA認證。 查看了github通知&#xff0c;自 2023 年 3 月起&#xff0c;GitHub 要求所有在 GitHub.com 上貢獻代碼的用戶啟用一種或多種形式的雙重身份驗證 (2FA)。 假如你也遇到這個問題&#xf…

Linux Docker 安裝oracle19c數據庫教程

Oracle 19c 是甲骨文公司&#xff08;Oracle Corporation&#xff09;發布的一款關系型數據庫管理系統&#xff08;RDBMS&#xff09;&#xff0c;屬于 Oracle Database 19c 版本。它是 Oracle 12c 和 18c 系列的后續版本&#xff0c;提供了多個重要的功能改進和新特性&#xf…

jenkins報錯java.lang.OutOfMemoryError: Java heap space

報錯信息 2025-05-27 09:17:16.2340000 [id38] WARNING j.u.ErrorLoggingScheduledThreadPoolExecutor#afterExecute: failure in task not wrapped in SafeTimerTask java.lang.OutOfMemoryError: Java heap spaceat java.base/java.lang.StringUTF16.compress(StringUTF16.j…

【Bug】定時任務中 Jpa Save 方法失效

【Bug】定時任務中 Jpa Save 方法失效 首先說一下問題&#xff0c;在定時任務中調用 jpa 的 save 方法沒有效果&#xff0c;但是通過外界調用&#xff0c;比如 controller 中注入 service 來調用是可以的&#xff0c;真是巨巨巨離譜&#xff0c;我被折磨了好幾天。 我這個問題…

【Redis】熱點key問題,的原因和處理,一致性哈希,刪除大key的方法

熱點 Key 指單個 Key 被高并發訪問&#xff08;如爆款商品&#xff09;&#xff0c;導致 Redis 壓力驟增。解決方案應針對 “單個 Key 高并發”&#xff1a; 分片緩存&#xff1a;將熱點 Key 分散到不同 Redis 節點&#xff08;如按一致性哈希算法分片&#xff09;。本地緩存&…

通過遠程桌面連接Windows實例提示“出現身份驗證錯誤,無法連接到本地安全機構”錯誤怎么辦?

本文介紹通過遠程桌面連接Windows實例提示“出現身份驗證錯誤無法連接到本地安全機構”錯誤的解決方案。 問題現象 通過本地電腦內的遠程桌面連接Windows實例提示“出現身份驗證錯誤&#xff0c;無法連接到本地安全機構”錯誤。 問題原因 導致該問題的可能原因如下&#x…

[python] argparse怎么指定bool類型?

前述 最近在寫腳本的時候想要實現一個if 操作&#xff0c;通過用戶輸入。確定要不要啟用某個語句。 非常自然的就是使用python的argparse包&#xff0c;但是發現了一個陷阱&#xff0c;記錄下。 陷阱 argparse.ArgumentParser() 可以指定輸入類型&#xff0c;我可以設定為bo…

Rust 學習筆記:迭代器

Rust 學習筆記&#xff1a;迭代器 Rust 學習筆記&#xff1a;迭代器Iterator trait 和 next 方法使用迭代器的方法生成其他迭代器的方法使用閉包捕獲它們的環境 Rust 學習筆記&#xff1a;迭代器 在 Rust 中&#xff0c;迭代器負責遍歷每個項的邏輯。迭代器是懶惰的&#xff0…

【深度剖析】義齒定制行業數字化轉型模式創新研究(上篇2:痛點和難點分析)

數字化轉型正在重塑義齒行業的生態格局,但也面臨技術融合與模式變革的深層挑戰。當前,義齒定制行業正處于從傳統手工制造向全流程數字化制造轉型的關鍵階段。3D掃描、CAD/CAM(計算機輔助設計與制造)、3D打印等技術的廣泛應用,顯著提升了義齒制作的精度和效率。傳統石膏模型…

window安裝nginx

步驟1&#xff1a;下載Nginx for Windows? 訪問Nginx官網下載頁面&#xff1a;https://nginx.org/en/download.html 在??Stable version??&#xff08;穩定版&#xff09;下找到Windows版本&#xff0c;點擊下載.zip文件&#xff08;如 nginx-1.28.0.zip&#xff09; 步…

氣象算法工程師學習路徑

目錄 &#x1f324;? 氣象學與數值預報基礎課程&#x1f916; 氣象人工智能與數據分析課程&#x1f4d8; 進階與實戰課程推薦&#x1f9ed; 學習建議與路徑規劃 如果希望成為一名氣象算法工程師&#xff0c;并尋找深入淺出、理論與實踐結合的學習資源&#xff0c;以下是為你精…

回調函數的理解

int yuxiangrousi 0; // 全局變量&#xff1a;魚香肉絲&#xff08;醬油量&#xff09;// 回調函數&#xff1a;媽媽處理醬油&#xff08;將醬油加入魚香肉絲&#xff09; void mother_callback(int new_jiangyou) {yuxiangrousi new_jiangyou; // 把醬油放進魚香肉絲 }// 孩…

多部手機連接同一wifi的ip一樣嗎?如何更改ip

通常情況下&#xff0c;多部手機連接同一個WiFi時&#xff0c;它們的IP地址是各不相同的&#xff08;在局域網內&#xff09;。但是&#xff0c;從互聯網&#xff08;外網&#xff09;的角度看&#xff0c;它們共享同一個公網IP地址。讓我詳細解釋一下&#xff0c;并說明如何更…

環境溫度通過H2A.Zub和H3K27me3動態調控擬南芥細胞命運決定

2025年4月22日&#xff0c;中國科學院遺傳與發育生物學研究所肖軍研究組在Developmental Cell在線發表了題為Dynamic control of H2A.Zub and H3K27me3 by ambient temperature during cell fate determination in Arabidopsis的研究論文&#xff0c;本研究綜合運用ChIP-seq、C…

2024 吉林 CCPC

文章目錄 2024 吉林 CCPCL. Recharge&#xff08;思維、分配&#xff09;G. Platform Game(模擬)E. Connect Components (排序、思維)D. Parallel Lines 2024 吉林 CCPC 題目鏈接&#xff1a; Dashboard - The 2024 CCPC National Invitational Contest (Changchun) , The 17…

day13 leetcode-hot100-24(鏈表3)

234. 回文鏈表 - 力扣&#xff08;LeetCode&#xff09; 1.轉化法 思路 將鏈表轉化為列表進行比較 復習到的知識 arraylist的長度函數&#xff1a;list.size() 具體代碼 /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode ne…

Vim文本編輯器快捷鍵用法以及簡單介紹

目錄 vim文本編輯器 簡介&#xff1a; 語法&#xff1a; vim模式介紹&#xff1a; 模式切換&#xff1a; 用法&#xff1a; 編輯模式&#xff1a; 一般模式&#xff1a; 命令模式&#xff1a; vim文本編輯器 簡介&#xff1a; 在命令行界面下&#xff0c;最常用的文本…